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] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |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,"4313308\n"); - end - FInput1E = 64'hC1CFFFFF00000000; - FInput2E = 64'hF6FFFFF 00000000; - FInput3E = 64'h1DD1345B00000000; - ans = 64'hA9E63B 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,"4314309\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 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,"4315310\n"); - end - FInput1E = 64'hBF682BCC00000000; - FInput2E = 64'h8DE11F7 00000000; - FInput3E = 64'h0810003F00000000; - 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,"4316311\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 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,"4317312\n"); - end - FInput1E = 64'hB800008000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3FFFFFFF00000000; - ans = 64'h7FFF00 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,"4318313\n"); - end - FInput1E = 64'h4800002000000000; - FInput2E = 64'h0000007 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,"4319314\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3D1FFFFF00000000; - ans = 64'hFC0000 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,"4320315\n"); - end - FInput1E = 64'h7FF4790B00000000; - FInput2E = 64'h1B81536 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,"4321316\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0D00000000000000; - ans = 64'h801FFF 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,"4322317\n"); - end - FInput1E = 64'h9C6FFFFF00000000; - FInput2E = 64'hF00007F 00000000; - FInput3E = 64'hF100000000000000; - ans = 64'h000FFE 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,"4323318\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000001 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,"4324319\n"); - end - FInput1E = 64'hBFF3020300000000; - FInput2E = 64'h078F269 00000000; - FInput3E = 64'hEA6C7A6300000000; - ans = 64'hFA41F1 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,"4325320\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 100000000; - 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,"4326321\n"); - end - FInput1E = 64'hDEF0000F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hAFFFDFFF00000000; - 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,"4327322\n"); - end - FInput1E = 64'hC0B23EE900000000; - FInput2E = 64'hD7A8F43 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,"4328323\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7F02000000000000; - ans = 64'h00003F A00000000; - 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,"4329324\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hFB80000 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,"4330325\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3AFFFFFF00000000; - ans = 64'hFF0010 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,"4331326\n"); - end - FInput1E = 64'h464FFFFF00000000; - FInput2E = 64'hFFFFFF0 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h0800FF 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,"4332327\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCA00000000000000; - 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,"4333328\n"); - end - FInput1E = 64'hB80BAE2100000000; - FInput2E = 64'h8C06330 00000000; - FInput3E = 64'hF800000000000000; - ans = 64'h00000F 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,"4334329\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - 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,"4335330\n"); - end - FInput1E = 64'h37F0000800000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF40000FF00000000; - 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,"4336331\n"); - end - FInput1E = 64'h3FFFFF7F00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'hFDFFFFFF00000000; - 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,"4337332\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFFE0000000000; - 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,"4338333\n"); - end - FInput1E = 64'h3FFFFFFF00000000; - FInput2E = 64'hFFE7FFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 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,"4339334\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h550003FF00000000; - 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,"4340335\n"); - end - FInput1E = 64'h3E00008000000000; - FInput2E = 64'h0001FFF 00000000; - FInput3E = 64'h007BF23D00000000; - ans = 64'h8968B6 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,"4341336\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - 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,"4342337\n"); - end - FInput1E = 64'hC020FF7F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h2EC75C3900000000; - ans = 64'h2AB798 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,"4343338\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4344339\n"); - end - FInput1E = 64'hC02FFFFF00000000; - FInput2E = 64'hFBBFFFF 00000000; - FInput3E = 64'h143CCE9C00000000; - ans = 64'hDB596C 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,"4345340\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFFFFFF8 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,"4346341\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1601000200000000; - 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,"4347342\n"); - end - FInput1E = 64'h4040400000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 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,"4348343\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3CAAE03E00000000; - ans = 64'h8D725E 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,"4349344\n"); - end - FInput1E = 64'hC1DFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0665144C00000000; - ans = 64'h2E72C1 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,"4350345\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - 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,"4351346\n"); - end - FInput1E = 64'h44D0000000000000; - FInput2E = 64'h01FFFBE 00000000; - FInput3E = 64'h7EFFFF0000000000; - 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,"4352347\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - 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,"4353348\n"); - end - FInput1E = 64'hD63CDC0300000000; - FInput2E = 64'hF706C68 00000000; - FInput3E = 64'hFC7FF00000000000; - 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,"4354349\n"); - end - FInput1E = 64'h3CAFE00000000000; - FInput2E = 64'hFFFFFFF 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,"4355350\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7FFFFBBF00000000; - ans = 64'hFFFFFF 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,"4356351\n"); - end - FInput1E = 64'h3F8015BC00000000; - FInput2E = 64'h3D07BE3 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,"4357352\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF04000000000000; - ans = 64'h0FFFFF 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,"4358353\n"); - end - FInput1E = 64'hBCB0000000000000; - FInput2E = 64'h1BFFFFF 00000000; - FInput3E = 64'hFB1034B700000000; - ans = 64'h28B19A 400000000; - 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,"4359354\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4360355\n"); - end - FInput1E = 64'h402FE00000000000; - FInput2E = 64'h0003FFF 00000000; - FInput3E = 64'h1EFFFFFF00000000; - ans = 64'hBFFFFF 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,"4361356\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"4362357\n"); - end - FInput1E = 64'h40C01E0000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FFFFFE000000000; - ans = 64'h007FFF 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,"4363358\n"); - end - FInput1E = 64'hBF69413400000000; - FInput2E = 64'h535875A 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,"4364359\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h5800002700000000; - 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,"4365360\n"); - end - FInput1E = 64'hC26FFFFF00000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - 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,"4366361\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h76FBFFFF00000000; - ans = 64'hFFFF00 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,"4367362\n"); - end - FInput1E = 64'h3FB704BE00000000; - FInput2E = 64'hC29E48B 00000000; - FInput3E = 64'hE1661BEA00000000; - ans = 64'hB601D6 600000000; - 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,"4368363\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - 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,"4369364\n"); - end - FInput1E = 64'hB49FDFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h028A297400000000; - ans = 64'h1821BB 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,"4370365\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 300000000; - 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,"4371366\n"); - end - FInput1E = 64'h43D0000000000000; - FInput2E = 64'h07FFFFB 00000000; - FInput3E = 64'h006A189700000000; - ans = 64'h1D8DF4 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,"4372367\n"); - end - FInput1E = 64'h37A01FFF00000000; - FInput2E = 64'hFFFFE00 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,"4373368\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'h007FFE 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,"4374369\n"); - end - FInput1E = 64'hFFE0007F00000000; - FInput2E = 64'hF7FFFFF 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,"4375370\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE180000000000000; - ans = 64'h000100 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,"4376371\n"); - end - FInput1E = 64'h30FBCC1500000000; - FInput2E = 64'h69CF4E9 00000000; - FInput3E = 64'h02FFFFE000000000; - ans = 64'h000000 300000000; - 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,"4377372\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - 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,"4378373\n"); - end - FInput1E = 64'h3D1CF7E800000000; - FInput2E = 64'hB63A254 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h040001 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,"4379374\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4380375\n"); - end - FInput1E = 64'hC1DFFFFF00000000; - FInput2E = 64'hFF80400 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h00DFFF 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,"4381376\n"); - end - FInput1E = 64'h31AFFFFF00000000; - FInput2E = 64'hFBC0000 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,"4382377\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFBFFFDFF00000000; - ans = 64'hFFE000 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,"4383378\n"); - end - FInput1E = 64'h455A583500000000; - FInput2E = 64'hED945C4 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,"4384379\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFF7FF00000000; - 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,"4385380\n"); - end - FInput1E = 64'h1980010000000000; - FInput2E = 64'h001FFFE 00000000; - FInput3E = 64'h0620000000000000; - ans = 64'h0001FE 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,"4386381\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4387382\n"); - end - FInput1E = 64'h40DEB2E500000000; - FInput2E = 64'h220191C 00000000; - FInput3E = 64'hFED52E1F00000000; - ans = 64'h58FE1F 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,"4388383\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 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,"4389384\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h63083FFF00000000; - ans = 64'hFFFFFE 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,"4390385\n"); - end - FInput1E = 64'h43F856A500000000; - FInput2E = 64'h96BFC0D 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,"4391386\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE47FFFFF00000000; - ans = 64'hFF7FFE 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,"4392387\n"); - end - FInput1E = 64'hC00FFFF800000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'hFF00000000000000; - 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,"4393388\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0110000000000000; - 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,"4394389\n"); - end - FInput1E = 64'hBF1FFFFF00000000; - FInput2E = 64'hFF00800 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h00080F 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,"4395390\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4396391\n"); - end - FInput1E = 64'hBFF0100000000000; - FInput2E = 64'h0080000 00000000; - FInput3E = 64'h3400000100000000; - ans = 64'hFFFEFF 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,"4397392\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"4398393\n"); - end - FInput1E = 64'hB7EE4A5500000000; - FInput2E = 64'hF907AB2 00000000; - FInput3E = 64'hFA572BFC00000000; - ans = 64'h169F00 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,"4399394\n"); - end - FInput1E = 64'h409F7FFF00000000; - FInput2E = 64'hFFFFFFA 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,"4400395\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h9D900AA500000000; - ans = 64'hF24FB4 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,"4401396\n"); - end - FInput1E = 64'h4346993D00000000; - FInput2E = 64'h596C515 00000000; - FInput3E = 64'hCA00000000000000; - 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,"4402397\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3C00400000000000; - 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,"4403398\n"); - end - FInput1E = 64'h4800100700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h4000040000000000; - ans = 64'h00007F 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,"4404399\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4405400\n"); - end - FInput1E = 64'h58A04E6700000000; - FInput2E = 64'h94568D4 00000000; - FInput3E = 64'hFFE0000000000000; - ans = 64'h00FFFF 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,"4406401\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 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,"4407402\n"); - end - FInput1E = 64'h400FFFFF00000000; - FInput2E = 64'hF80003F 00000000; - FInput3E = 64'hFF0000FB00000000; - 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,"4408403\n"); - end - FInput1E = 64'hC0C0000000000000; - FInput2E = 64'h0000180 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,"4409404\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8001FFFF00000000; - ans = 64'hF80000 B00000000; - 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,"4410405\n"); - end - FInput1E = 64'hD4AFF7FF00000000; - FInput2E = 64'hFFFBFFF 00000000; - FInput3E = 64'hFF00000000000000; - 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,"4411406\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7804000400000000; - 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,"4412407\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h008FFFE 00000000; - FInput3E = 64'h7F1FFFFF00000000; - ans = 64'hFFDFFF C00000000; - 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,"4413408\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - 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,"4414409\n"); - end - FInput1E = 64'hC060400000000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'h8F00001F00000000; - ans = 64'hDFFFFF 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,"4415410\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"4416411\n"); - end - FInput1E = 64'h46D0000000000000; - FInput2E = 64'h000DFFF 00000000; - FInput3E = 64'h38001FFF00000000; - ans = 64'hF7FFFF 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,"4417412\n"); - end - FInput1E = 64'h3F368AA700000000; - FInput2E = 64'hD2D6879 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,"4418413\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h35383D4A00000000; - ans = 64'h966FD2 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,"4419414\n"); - end - FInput1E = 64'h4260040000000000; - FInput2E = 64'h0000080 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"4420415\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD40000300000000; - 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,"4421416\n"); - end - FInput1E = 64'hC1C3692800000000; - FInput2E = 64'h01AD73F 00000000; - FInput3E = 64'h3FBA783700000000; - ans = 64'h97DAC8 B00000000; - 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,"4422417\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4423418\n"); - end - FInput1E = 64'hC010E6B300000000; - FInput2E = 64'h624175D 00000000; - FInput3E = 64'h14FFFFFF00000000; - ans = 64'hF0000E 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,"4424419\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - 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,"4425420\n"); - end - FInput1E = 64'hC3EFFDDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h08F7FFFC00000000; - 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,"4426421\n"); - end - FInput1E = 64'h41E0000000000000; - FInput2E = 64'h000001F 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,"4427422\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000100000000; - ans = 64'h000040 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,"4428423\n"); - end - FInput1E = 64'hB80E213500000000; - FInput2E = 64'h47E4DD6 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,"4429424\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hD6F1FFFF00000000; - 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,"4430425\n"); - end - FInput1E = 64'hC1EFFFFF00000000; - FInput2E = 64'hFFFFF3E 00000000; - FInput3E = 64'hDD491B6900000000; - ans = 64'hB94192 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,"4431426\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4432427\n"); - end - FInput1E = 64'h41BCDD7000000000; - FInput2E = 64'hDC44760 00000000; - FInput3E = 64'h7F88B1DB00000000; - ans = 64'h13ABE7 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,"4433428\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 C00000000; - 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,"4434429\n"); - end - FInput1E = 64'hC1FE1A0A00000000; - FInput2E = 64'h3C18FC5 00000000; - FInput3E = 64'h7EFFFFFE00000000; - ans = 64'hE00000 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,"4435430\n"); - end - FInput1E = 64'hBFB0800000000000; - FInput2E = 64'h000003F 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,"4436431\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEB34D9B00000000; - ans = 64'hB597BB 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,"4437432\n"); - end - FInput1E = 64'h47F0000100000000; - FInput2E = 64'h1000000 00000000; - FInput3E = 64'hCAFFFFFF00000000; - 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,"4438433\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1EFFFFFF00000000; - ans = 64'hFFFFFB 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,"4439434\n"); - end - FInput1E = 64'hC009C2B900000000; - FInput2E = 64'h47E606C 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h007FFF 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,"4440435\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4441436\n"); - end - FInput1E = 64'hC7F0000800000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFF700000000; - 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,"4442437\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - 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,"4443438\n"); - end - FInput1E = 64'h3810000000000000; - FInput2E = 64'h004007F 00000000; - FInput3E = 64'h3C00000000000000; - ans = 64'h0001FF 100000000; - 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,"4444439\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'h7BFFFFE 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,"4445440\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFD00000000; - ans = 64'h000000 400000000; - 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,"4446441\n"); - end - FInput1E = 64'h47E0080000000000; - FInput2E = 64'h000003E 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 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,"4447442\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h02098F5000000000; - ans = 64'h34E2A9 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,"4448443\n"); - end - FInput1E = 64'h40AE000000000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h0389DEB500000000; - ans = 64'h6907AB 400000000; - 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,"4449444\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4450445\n"); - end - FInput1E = 64'hBEDFFFFF00000000; - FInput2E = 64'hF007FFF 00000000; - FInput3E = 64'hEC00100000000000; - 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,"4451446\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 600000000; - 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,"4452447\n"); - end - FInput1E = 64'hBFD0008000000000; - FInput2E = 64'h000FFFF 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h007DFF 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,"4453448\n"); - end - FInput1E = 64'hDE2FFFFF00000000; - FInput2E = 64'hFFDDFFF 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,"4454449\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1FE0000000000000; - 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,"4455450\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'h03FFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 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,"4456451\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0200000000000000; - 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,"4457452\n"); - end - FInput1E = 64'h47F889B900000000; - FInput2E = 64'h68F751A 00000000; - FInput3E = 64'h01F89EA900000000; - ans = 64'h42BA08 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,"4458453\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4459454\n"); - end - FInput1E = 64'hBFCFFFFF00000000; - FInput2E = 64'h800001F 00000000; - FInput3E = 64'h8000000F00000000; - ans = 64'hFBFFFE 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,"4460455\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - 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,"4461456\n"); - end - FInput1E = 64'h56D2D7EA00000000; - FInput2E = 64'hA0475C5 00000000; - FInput3E = 64'h3E00000000000000; - 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,"4462457\n"); - end - FInput1E = 64'h35D0000000000000; - FInput2E = 64'h040001F 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,"4463458\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hEB40100000000000; - ans = 64'h000000 400000000; - 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,"4464459\n"); - end - FInput1E = 64'hACCFFE0000000000; - FInput2E = 64'h000001F 00000000; - FInput3E = 64'h0000000000000000; - 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,"4465460\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FBF7FF00000000; - 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,"4466461\n"); - end - FInput1E = 64'h3FB0001000000000; - FInput2E = 64'h000003E 00000000; - FInput3E = 64'h80BDB7A000000000; - ans = 64'hC286C7 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,"4467462\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 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,"4468463\n"); - end - FInput1E = 64'h0018000000000000; - FInput2E = 64'h0000010 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h7FFE00 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,"4469464\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 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,"4470465\n"); - end - FInput1E = 64'hBF8F800000000000; - FInput2E = 64'h0FFFFFE 00000000; - FInput3E = 64'hF6FFFEFF00000000; - 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,"4471466\n"); - end - FInput1E = 64'hC045A07000000000; - FInput2E = 64'h051A035 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,"4472467\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1EF8001F00000000; - ans = 64'hFFFFFF 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,"4473468\n"); - end - FInput1E = 64'hC02FFFFF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 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,"4474469\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h6FFFFFFF00000000; - ans = 64'hFFEDFF 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,"4475470\n"); - end - FInput1E = 64'hB12FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1C5F8CE900000000; - ans = 64'hFD6525 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,"4476471\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 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,"4477472\n"); - end - FInput1E = 64'hB7D7FFFF00000000; - FInput2E = 64'hFFFFFDF 00000000; - FInput3E = 64'hF910007F00000000; - 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,"4478473\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - 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,"4479474\n"); - end - FInput1E = 64'hC1C1000100000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1200000000000000; - ans = 64'h0041FF B00000000; - 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,"4480475\n"); - end - FInput1E = 64'hC490000000000000; - FInput2E = 64'h0008001 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,"4481476\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hEEFFFFFF00000000; - ans = 64'h3FFFFE 000000000; - 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,"4482477\n"); - end - FInput1E = 64'h4108EAA700000000; - FInput2E = 64'h6F3FD0D 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"4483478\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0300000000000000; - 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,"4484479\n"); - end - FInput1E = 64'h400FF5FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1CFFFFFF00000000; - ans = 64'hFFF002 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,"4485480\n"); - end - FInput1E = 64'hBFF0000000000000; - 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,"4486481\n"); - end - FInput1E = 64'h123EFFFF00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'h7E00000000000000; - 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,"4487482\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 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,"4488483\n"); - end - FInput1E = 64'h41DFFFE000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h1FFFFFFF00000000; - ans = 64'hF7FFFE 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,"4489484\n"); - end - FInput1E = 64'h43F612E100000000; - FInput2E = 64'hEC388E1 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,"4490485\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0191728A00000000; - ans = 64'h7EBE19 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,"4491486\n"); - end - FInput1E = 64'hC1C0000000000000; - FInput2E = 64'h0FFE000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 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,"4492487\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h8000200000000000; - ans = 64'h0003FF 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,"4493488\n"); - end - FInput1E = 64'h169FE00000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00E0000000000000; - ans = 64'h7FFFFF 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,"4494489\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 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,"4495490\n"); - end - FInput1E = 64'hB1FF7C6400000000; - FInput2E = 64'h4763AFA 00000000; - FInput3E = 64'hFAFFFFFF00000000; - ans = 64'hFF0000 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,"4496491\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 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,"4497492\n"); - end - FInput1E = 64'h2690000000000000; - FInput2E = 64'h3FF7FFF 00000000; - FInput3E = 64'h0017601800000000; - ans = 64'hA96920 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,"4498493\n"); - end - FInput1E = 64'h3034E74400000000; - FInput2E = 64'h09910C7 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,"4499494\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h00080E 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,"4500495\n"); - end - FInput1E = 64'h3F8FFFFF00000000; - FInput2E = 64'hFFFBFFB 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - 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,"4501496\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02E0000000000000; - ans = 64'h100000 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,"4502497\n"); - end - FInput1E = 64'h410FFFFF00000000; - FInput2E = 64'hFFF80FF 00000000; - FInput3E = 64'hA1FFE00000000000; - ans = 64'h200000 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,"4503498\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 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,"4504499\n"); - end - FInput1E = 64'h41C0A70000000000; - FInput2E = 64'hB81B7C3 00000000; - FInput3E = 64'hFC00000000000000; - 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,"4505500\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA00000000000000; - 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,"4506501\n"); - end - FInput1E = 64'h416FFFFF00000000; - FInput2E = 64'hE000006 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h07DFFF 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,"4507502\n"); - end - FInput1E = 64'h45DFFFFF00000000; - 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,"4508503\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFDFFF00000000; - 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,"4509504\n"); - end - FInput1E = 64'h801A43C100000000; - FInput2E = 64'h73D2D87 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 800000000; - 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,"4510505\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDDCBD5F00000000; - ans = 64'h7B5ED3 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,"4511506\n"); - end - FInput1E = 64'hC19007FF00000000; - FInput2E = 64'hC000000 00000000; - FInput3E = 64'hFCF807FF00000000; - ans = 64'hFFFFFE 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,"4512507\n"); - end - FInput1E = 64'hBFF0000000000000; - 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,"4513508\n"); - end - FInput1E = 64'h4030000700000000; - FInput2E = 64'hFFFBFFE 00000000; - FInput3E = 64'h7F00001F00000000; - ans = 64'hFFFFFA 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,"4514509\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 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,"4515510\n"); - end - FInput1E = 64'hC1A07FFF00000000; - FInput2E = 64'hFFFFE00 00000000; - FInput3E = 64'h807FFFFF00000000; - ans = 64'hFFF800 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,"4516511\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h2000FFF 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,"4517512\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFF1E 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,"4518513\n"); - end - FInput1E = 64'hAE6E000000000000; - FInput2E = 64'h0000FFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 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,"4519514\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h03FFFF0000000000; - ans = 64'h00007F 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,"4520515\n"); - end - FInput1E = 64'h4170000000000000; - FInput2E = 64'h0FFFFFC 00000000; - FInput3E = 64'h3E0000FF00000000; - 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,"4521516\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 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,"4522517\n"); - end - FInput1E = 64'h408FFFFF00000000; - FInput2E = 64'hFFC003F 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h400003 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,"4523518\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 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,"4524519\n"); - end - FInput1E = 64'hC010000200000000; - FInput2E = 64'h000000F 00000000; - FInput3E = 64'hFD01E00000000000; - 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,"4525520\n"); - end - FInput1E = 64'h6080000000000000; - FInput2E = 64'hFEFFFFE 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,"4526521\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h20003F 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,"4527522\n"); - end - FInput1E = 64'h4030008000000000; - FInput2E = 64'h0003FFF 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,"4528523\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3496A6F000000000; - ans = 64'hFEA870 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,"4529524\n"); - end - FInput1E = 64'h3E30004200000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h000007FF00000000; - ans = 64'hFFBFFF 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,"4530525\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 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,"4531526\n"); - end - FInput1E = 64'h4007F18F00000000; - FInput2E = 64'h227C058 00000000; - FInput3E = 64'h28DFFFFF00000000; - ans = 64'hFEFFFE 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,"4532527\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF C00000000; - 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,"4533528\n"); - end - FInput1E = 64'hBFD8705100000000; - FInput2E = 64'h7D64512 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFD7FFF 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,"4534529\n"); - end - FInput1E = 64'h47F2E47A00000000; - FInput2E = 64'h15B5022 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,"4535530\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h4900000200000000; - ans = 64'hFFFFFF 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,"4536531\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h07FFFF7 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"4537532\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7EFC01FF00000000; - 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,"4538533\n"); - end - FInput1E = 64'hD730004000000000; - FInput2E = 64'h000000F 00000000; - FInput3E = 64'h037A768600000000; - ans = 64'h56BC32 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,"4539534\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 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,"4540535\n"); - end - FInput1E = 64'hBFA01B1300000000; - FInput2E = 64'hC0AE2CC 00000000; - FInput3E = 64'h03FFE00000000000; - ans = 64'h7FFFFE 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,"4541536\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 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,"4542537\n"); - end - FInput1E = 64'h406FFFFF00000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'h01E0000000000000; - ans = 64'h000020 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,"4543538\n"); - end - FInput1E = 64'hC1DFFFFF00000000; - FInput2E = 64'h0800000 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,"4544539\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFCFFDFFF00000000; - 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,"4545540\n"); - end - FInput1E = 64'h0000480000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - 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,"4546541\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h475EB03D00000000; - ans = 64'h4F2915 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,"4547542\n"); - end - FInput1E = 64'h67AFFFFF00000000; - FInput2E = 64'h8000006 00000000; - FInput3E = 64'h3016E70E00000000; - ans = 64'hA6BD2F 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,"4548543\n"); - end - FInput1E = 64'hBFF0000000000000; - 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,"4549544\n"); - end - FInput1E = 64'hC0EFFFBD00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF700007F00000000; - ans = 64'hFFFBFF 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,"4550545\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 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,"4551546\n"); - end - FInput1E = 64'hBC40000F00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01F7FFFD00000000; - ans = 64'hFFFFFF E00000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"4552547\n"); - end - FInput1E = 64'hC019D61300000000; - FInput2E = 64'hB098D97 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,"4553548\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hD3005FFF00000000; - ans = 64'hFFFFFF 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,"4554549\n"); - end - FInput1E = 64'h4190000000000000; - FInput2E = 64'h03FFFFC 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"4555550\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3C495BE800000000; - ans = 64'hA1F685 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,"4556551\n"); - end - FInput1E = 64'h41E0100000000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'hF8309D6400000000; - ans = 64'h6B89E2 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,"4557552\n"); - end - FInput1E = 64'hBFF0000000000000; - 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,"4558553\n"); - end - FInput1E = 64'h9E10000000000000; - FInput2E = 64'h3FFFF80 00000000; - FInput3E = 64'h3E00000000000000; - ans = 64'h3FFFFF 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,"4559554\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 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,"4560555\n"); - end - FInput1E = 64'hBFE5709E00000000; - FInput2E = 64'h602A652 00000000; - FInput3E = 64'h0001000000000000; - 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,"4561556\n"); - end - FInput1E = 64'hC3EFFFFF00000000; - FInput2E = 64'hFFC001F 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,"4562557\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF8FFFFFF00000000; - ans = 64'h000000 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,"4563558\n"); - end - FInput1E = 64'h3FC07FFF00000000; - FInput2E = 64'hF800000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 F00000000; - 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,"4564559\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h03FFFFC000000000; - 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,"4565560\n"); - end - FInput1E = 64'hBED0000400000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'h0200000100000000; - ans = 64'hFDFFFF 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,"4566561\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 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,"4567562\n"); - end - FInput1E = 64'h2DC0200F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB7FFFFFF00000000; - 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,"4568563\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 400000000; - 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,"4569564\n"); - end - FInput1E = 64'h380101FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEFFBFFF00000000; - ans = 64'hFFFFC0 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,"4570565\n"); - end - FInput1E = 64'hC807BE4B00000000; - FInput2E = 64'h2EA0C78 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,"4571566\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0CFF3FFF00000000; - 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,"4572567\n"); - end - FInput1E = 64'hB81FFFEF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 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,"4573568\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h2BFFFFE000000000; - ans = 64'h040000 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,"4574569\n"); - end - FInput1E = 64'hC1D0000000000000; - FInput2E = 64'h0084000 00000000; - FInput3E = 64'h3400100000000000; - ans = 64'h0FFFFF 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,"4575570\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 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,"4576571\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h0000077 00000000; - FInput3E = 64'hF000003F00000000; - 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,"4577572\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 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,"4578573\n"); - end - FInput1E = 64'h3FA0000700000000; - FInput2E = 64'hFFFBFFF 00000000; - FInput3E = 64'h8101000700000000; - ans = 64'hFFFFFF B00000000; - 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,"4579574\n"); - end - FInput1E = 64'h3CAB281900000000; - FInput2E = 64'h8748CCA 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,"4580575\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3EA3E8A000000000; - ans = 64'hEC3C01 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,"4581576\n"); - end - FInput1E = 64'h41053FE000000000; - FInput2E = 64'h984DAB0 00000000; - FInput3E = 64'hFE00000000000000; - 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,"4582577\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'hFFFFBF 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,"4583578\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hA000000 00000000; - FInput3E = 64'h34FE00FF00000000; - 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,"4584579\n"); - end - FInput1E = 64'hBFF0000000000000; - 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,"4585580\n"); - end - FInput1E = 64'hFFE07FFB00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0265892000000000; - ans = 64'hBB88D1 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,"4586581\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"4587582\n"); - end - FInput1E = 64'h4020080000000000; - FInput2E = 64'h000001F 00000000; - FInput3E = 64'h3EDE013500000000; - ans = 64'hFA7D54 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,"4588583\n"); - end - FInput1E = 64'hC430001F00000000; - FInput2E = 64'hFC00000 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,"4589584\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1D00100000000000; - ans = 64'h020000 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,"4590585\n"); - end - FInput1E = 64'hBFB0000200000000; - 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,"4591586\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h8004000000000000; - 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,"4592587\n"); - end - FInput1E = 64'hC050000000000000; - FInput2E = 64'h01FFFFD 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hF80010 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,"4593588\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 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,"4594589\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000043 00000000; - FInput3E = 64'h00FBFFFF00000000; - ans = 64'hFEFFFF 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,"4595590\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 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,"4596591\n"); - end - FInput1E = 64'h400FF00000000000; - FInput2E = 64'h0001FFF 00000000; - FInput3E = 64'hFBFFFF0000000000; - ans = 64'h1FFFFF 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,"4597592\n"); - end - FInput1E = 64'h43DFFFFC00000000; - FInput2E = 64'h0000003 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,"4598593\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFC00000000000; - ans = 64'h1FFFFF 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,"4599594\n"); - end - FInput1E = 64'hC3C0000000000000; - FInput2E = 64'h00003F7 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 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,"4600595\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h06FC000000000000; - ans = 64'h0003FE 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,"4601596\n"); - end - FInput1E = 64'hC037FFFF00000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'h3D00000700000000; - ans = 64'hFFEFFF 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,"4602597\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0000001 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,"4603598\n"); - end - FInput1E = 64'h46A2977600000000; - FInput2E = 64'h6BF8310 00000000; - FInput3E = 64'h7E007FFF00000000; - 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,"4604599\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4605600\n"); - end - FInput1E = 64'h763FE00300000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hBE9BBE2E00000000; - ans = 64'h537044 300000000; - flags = 5'h84; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"84 "); - $fwrite(fp,"4606601\n"); - end - FInput1E = 64'h405FFFFF00000000; - FInput2E = 64'hDBFFFFF 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,"4607602\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h5800000000000000; - ans = 64'h00005F 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,"4608603\n"); - end - FInput1E = 64'h7FEFFEFF00000000; - FInput2E = 64'hFFFF7FF 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,"4609604\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD3EFFFF00000000; - 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,"4610605\n"); - end - FInput1E = 64'hBFE4F7A200000000; - FInput2E = 64'h6810DB1 00000000; - FInput3E = 64'h10D783D600000000; - ans = 64'h93F157 800000000; - flags = 5'hF0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"F0 "); - $fwrite(fp,"4611606\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4612607\n"); - end - FInput1E = 64'hC3CD482200000000; - FInput2E = 64'hDBEEB29 00000000; - FInput3E = 64'h22FF7FFF00000000; - ans = 64'hFFFFFA 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,"4613608\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 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,"4614609\n"); - end - FInput1E = 64'h3FD7E57300000000; - FInput2E = 64'h33AF646 00000000; - FInput3E = 64'hFCFC642F00000000; - ans = 64'h0F4A84 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,"4615610\n"); - end - FInput1E = 64'h3F70003F00000000; - FInput2E = 64'hFFFFFFF 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,"4616611\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8079BBB400000000; - ans = 64'h1B00C2 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,"4617612\n"); - end - FInput1E = 64'hE09E76D000000000; - FInput2E = 64'h7B4EE72 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 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,"4618613\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'h004000 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,"4619614\n"); - end - FInput1E = 64'h802FFFFF00000000; - FInput2E = 64'hFFFBFEF 00000000; - FInput3E = 64'h1E04000000000000; - ans = 64'h800000 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,"4620615\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - 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,"4621616\n"); - end - FInput1E = 64'hB7EFFF8400000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3C01FFFF00000000; - 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,"4622617\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - 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,"4623618\n"); - end - FInput1E = 64'h8010000000000000; - FInput2E = 64'h0001FFA 00000000; - FInput3E = 64'h01C11CF500000000; - ans = 64'h3C5AD0 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,"4624619\n"); - end - FInput1E = 64'h403007FF00000000; - FInput2E = 64'hFFFFE00 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,"4625620\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFC00000000000000; - ans = 64'h000010 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,"4626621\n"); - end - FInput1E = 64'hFFDFFFFF00000000; - FInput2E = 64'hF800003 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 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,"4627622\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFEEFFFF00000000; - 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,"4628623\n"); - end - FInput1E = 64'h480F7FF700000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D04000000000000; - 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,"4629624\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4630625\n"); - end - FInput1E = 64'h7FEFFFFF00000000; - FInput2E = 64'hFFF0000 00000000; - FInput3E = 64'hFF7CFEBB00000000; - ans = 64'h3F65A8 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,"4631626\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - 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,"4632627\n"); - end - FInput1E = 64'hC030000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h2600000100000000; - ans = 64'hFFEFFF A00000000; - 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,"4633628\n"); - end - FInput1E = 64'hB7F7543000000000; - FInput2E = 64'h2627727 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,"4634629\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h28C0000000000000; - ans = 64'h000007 100000000; - 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,"4635630\n"); - end - FInput1E = 64'hC11FFF0000000000; - FInput2E = 64'h0007FFE 00000000; - FInput3E = 64'hFF00000000000000; - 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,"4636631\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h001000 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,"4637632\n"); - end - FInput1E = 64'h3FFFF80000000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hD705739D00000000; - ans = 64'h845E82 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,"4638633\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4639634\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h000023F 00000000; - FInput3E = 64'h8902000000000000; - ans = 64'h0000FE 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,"4640635\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 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,"4641636\n"); - end - FInput1E = 64'hC1E138D900000000; - FInput2E = 64'hED532A0 00000000; - FInput3E = 64'hDEFFFFF000000000; - ans = 64'h0FFFFF 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,"4642637\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hCFFFFFE 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,"4643638\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E00080F00000000; - 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,"4644639\n"); - end - FInput1E = 64'h43F3EC2000000000; - FInput2E = 64'h4B7BCB5 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE B00000000; - 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,"4645640\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF56917B00000000; - ans = 64'h75748A 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,"4646641\n"); - end - FInput1E = 64'h7FF0010000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0169AEE200000000; - ans = 64'h19FEE1 700000000; - 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,"4647642\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4648643\n"); - end - FInput1E = 64'h3FAEE1CE00000000; - FInput2E = 64'h1EE193F 00000000; - FInput3E = 64'hFD00000000000000; - 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,"4649644\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - 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,"4650645\n"); - end - FInput1E = 64'h43DFFFE000000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'hFA00000000000000; - ans = 64'h17FFFF 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,"4651646\n"); - end - FInput1E = 64'hBCA818D500000000; - FInput2E = 64'h35D04EA 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,"4652647\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8D00FFF700000000; - 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,"4653648\n"); - end - FInput1E = 64'hB7F10DFC00000000; - FInput2E = 64'hE2D7BFB 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 800000000; - 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,"4654649\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1AFFFE7F00000000; - 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,"4655650\n"); - end - FInput1E = 64'h3F5D7F1E00000000; - FInput2E = 64'h3D53DA5 00000000; - FInput3E = 64'hF800000000000000; - ans = 64'h043FFE 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,"4656651\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - 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,"4657652\n"); - end - FInput1E = 64'h4D37BCC500000000; - FInput2E = 64'hF3BF385 00000000; - FInput3E = 64'h8200001F00000000; - ans = 64'hFFFFE0 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,"4658653\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - 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,"4659654\n"); - end - FInput1E = 64'h43C0020000000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'h0117F19C00000000; - ans = 64'h220E49 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,"4660655\n"); - end - FInput1E = 64'h8020000000000000; - FInput2E = 64'h01FFFFF 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,"4661656\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h800001FF00000000; - ans = 64'hFFFFC0 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,"4662657\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h011FFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"4663658\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80F377E000000000; - ans = 64'h42B874 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,"4664659\n"); - end - FInput1E = 64'h4090000000000000; - FInput2E = 64'h000000B 00000000; - FInput3E = 64'hE3C4A82A00000000; - ans = 64'hD0DC40 200000000; - 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,"4665660\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4666661\n"); - end - FInput1E = 64'hC0A0007F00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'h001FFF 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,"4667662\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4668663\n"); - end - FInput1E = 64'hC01AD12800000000; - FInput2E = 64'h4387F1F 00000000; - FInput3E = 64'h0C00040000000000; - ans = 64'hFFFFFF 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,"4669664\n"); - end - FInput1E = 64'hC1DAD2DF00000000; - FInput2E = 64'h2276BBF 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,"4670665\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80FD800000000000; - ans = 64'h000000 800000000; - 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,"4671666\n"); - end - FInput1E = 64'h3DFFEFFF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'hFF00000000000000; - 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,"4672667\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFFFFFFBF00000000; - 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,"4673668\n"); - end - FInput1E = 64'h3FF3872E00000000; - FInput2E = 64'hCAE1013 00000000; - FInput3E = 64'hFCFFFF8000000000; - ans = 64'hFFFFFF 100000000; - 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,"4674669\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4675670\n"); - end - FInput1E = 64'hB21FFFFF00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'h80FFF7FF00000000; - ans = 64'hFFFFF8 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,"4676671\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 200000000; - 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,"4677672\n"); - end - FInput1E = 64'h383FFFEB00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'hFDFFFF 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,"4678673\n"); - end - FInput1E = 64'hFFF0002000000000; - FInput2E = 64'h001FFFF 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,"4679674\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0E7B8B7900000000; - ans = 64'h4E7B42 000000000; - 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,"4680675\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'h080000E 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 C00000000; - 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,"4681676\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F3FFFFF00000000; - 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,"4682677\n"); - end - FInput1E = 64'h3FE75C0A00000000; - FInput2E = 64'h7C7E67E 00000000; - FInput3E = 64'hE2FFF80000000000; - ans = 64'h003FFF 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,"4683678\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4684679\n"); - end - FInput1E = 64'hC7F003C000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h6500000000000000; - ans = 64'h1FFFFE 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,"4685680\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 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,"4686681\n"); - end - FInput1E = 64'h3C8332AE00000000; - FInput2E = 64'h42CCF9F 00000000; - FInput3E = 64'h1C1E412D00000000; - ans = 64'hA03E71 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,"4687682\n"); - end - FInput1E = 64'hC98FFFFF00000000; - FInput2E = 64'hF800002 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,"4688683\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCD00200000000000; - 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,"4689684\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hFFF8002 00000000; - FInput3E = 64'hFF00000000000000; - 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,"4690685\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7FFFFFFC00000000; - 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,"4691686\n"); - end - FInput1E = 64'hC1A1007F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h346BB45100000000; - ans = 64'h645575 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,"4692687\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - 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,"4693688\n"); - end - FInput1E = 64'hBEBFFF0000000000; - FInput2E = 64'h000003F 00000000; - FInput3E = 64'h7F001FFF00000000; - 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,"4694689\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"4695690\n"); - end - FInput1E = 64'hA50BA39000000000; - FInput2E = 64'h419AB87 00000000; - FInput3E = 64'hFA04000000000000; - ans = 64'h000004 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,"4696691\n"); - end - FInput1E = 64'hFFD001FF00000000; - FInput2E = 64'hFFFFBFF 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,"4697692\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8100000000000000; - 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,"4698693\n"); - end - FInput1E = 64'hC1C1062300000000; - FInput2E = 64'hC7409D3 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 400000000; - 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,"4699694\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h02FF800000000000; - 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,"4700695\n"); - end - FInput1E = 64'hC0AFFFFF00000000; - FInput2E = 64'hF80001F 00000000; - FInput3E = 64'hFC3DB71C00000000; - ans = 64'hBEEFB9 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,"4701696\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4702697\n"); - end - FInput1E = 64'hC0201FFF00000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'h9300002100000000; - 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,"4703698\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - 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,"4704699\n"); - end - FInput1E = 64'h40B0001F00000000; - FInput2E = 64'hFFFFEFF 00000000; - FInput3E = 64'hF9F8007F00000000; - 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,"4705700\n"); - end - FInput1E = 64'h3FBEFFFF00000000; - 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,"4706701\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h1BFFFF 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,"4707702\n"); - end - FInput1E = 64'h40E0000000000000; - FInput2E = 64'h001DFFF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 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,"4708703\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3CFFFFFF00000000; - ans = 64'h1FFFFF 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,"4709704\n"); - end - FInput1E = 64'h3FC0000000000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'h2900000300000000; - 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,"4710705\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4711706\n"); - end - FInput1E = 64'hB8BEFFFF00000000; - FInput2E = 64'hBFFFFFF 00000000; - FInput3E = 64'hFFF3F13200000000; - ans = 64'hBD971C 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,"4712707\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4713708\n"); - end - FInput1E = 64'hB9A0001000000000; - FInput2E = 64'h0080000 00000000; - FInput3E = 64'hFD4DEB5C00000000; - ans = 64'h56CEAE 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,"4714709\n"); - end - FInput1E = 64'hC1F7FFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4715710\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"4716711\n"); - end - FInput1E = 64'hBF6FFFFF00000000; - FInput2E = 64'hFFF9000 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,"4717712\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0200040000000000; - ans = 64'h000002 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,"4718713\n"); - end - FInput1E = 64'h002FFFFF00000000; - FInput2E = 64'hFFFFFE0 00000000; - FInput3E = 64'h05FF800000000000; - 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,"4719714\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4720715\n"); - end - FInput1E = 64'h47F0001F00000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'h070083FF00000000; - 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,"4721716\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 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,"4722717\n"); - end - FInput1E = 64'h47FFFFFF00000000; - FInput2E = 64'hFFFFFFC 00000000; - FInput3E = 64'h3DFC000100000000; - 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,"4723718\n"); - end - FInput1E = 64'h4050000000000000; - FInput2E = 64'hFDFFFFE 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,"4724719\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1F0FFFFF00000000; - ans = 64'hDFFFFF 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,"4725720\n"); - end - FInput1E = 64'h5C673B1600000000; - FInput2E = 64'hF07A46D 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 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,"4726721\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFF76 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,"4727722\n"); - end - FInput1E = 64'hC0252B8F00000000; - FInput2E = 64'hC404829 00000000; - FInput3E = 64'h81FFFDFB00000000; - 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,"4728723\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - 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,"4729724\n"); - end - FInput1E = 64'h428407F500000000; - FInput2E = 64'hBF938E8 00000000; - FInput3E = 64'h1F75F1A100000000; - ans = 64'h02898F 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,"4730725\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 A00000000; - 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,"4731726\n"); - end - FInput1E = 64'h3FDFFFFC00000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'h431000FF00000000; - 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,"4732727\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFF9FF 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,"4733728\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFEF00 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,"4734729\n"); - end - FInput1E = 64'hC030000000000000; - FInput2E = 64'h0800007 00000000; - FInput3E = 64'h3400000000000000; - 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,"4735730\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCABFFFFF00000000; - ans = 64'hFFFFBF 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,"4736731\n"); - end - FInput1E = 64'h8005CEE600000000; - FInput2E = 64'hC465C4B 00000000; - FInput3E = 64'h1C00000000000000; - ans = 64'h400007 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,"4737732\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4738733\n"); - end - FInput1E = 64'h41D2000000000000; - FInput2E = 64'h00007FE 00000000; - FInput3E = 64'h01FFF8FF00000000; - 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,"4739734\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 000000000; - 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,"4740735\n"); - end - FInput1E = 64'h380D4E8D00000000; - FInput2E = 64'h05C11B6 00000000; - FInput3E = 64'h4000000000000000; - ans = 64'h007DFF 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,"4741736\n"); - end - FInput1E = 64'hBFC90D5500000000; - FInput2E = 64'h13808AA 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,"4742737\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB00080000000000; - 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,"4743738\n"); - end - FInput1E = 64'hB7EFFFFE00000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 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,"4744739\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FF780000000000; - 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,"4745740\n"); - end - FInput1E = 64'h3FF0003F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h5FE0000000000000; - 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,"4746741\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 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,"4747742\n"); - end - FInput1E = 64'hD2CFFDFF00000000; - FInput2E = 64'hFFFFDFE 00000000; - FInput3E = 64'h9AFFFFF700000000; - 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,"4748743\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"4749744\n"); - end - FInput1E = 64'h41C07FFF00000000; - FInput2E = 64'hFFFFC00 00000000; - FInput3E = 64'h3DFFFFEF00000000; - ans = 64'hFFFE00 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,"4750745\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFF77FF 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,"4751746\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF5400D0900000000; - ans = 64'h7E54EB 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,"4752747\n"); - end - FInput1E = 64'hBFDFFFFF00000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 200000000; - 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,"4753748\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h13503A5C00000000; - ans = 64'h6B25FB 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,"4754749\n"); - end - FInput1E = 64'h61D3FFFF00000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'hFF5EC2E900000000; - ans = 64'hD886BD 000000000; - 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,"4755750\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 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,"4756751\n"); - end - FInput1E = 64'hBF40000000000000; - FInput2E = 64'h2000000 00000000; - FInput3E = 64'hEC7A507D00000000; - ans = 64'h22C1B6 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,"4757752\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 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,"4758753\n"); - end - FInput1E = 64'hB7EFC00800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1C00000F00000000; - ans = 64'hFFC000 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,"4759754\n"); - end - FInput1E = 64'h461FFE0000000000; - FInput2E = 64'h0000000 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,"4760755\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hFFF008 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,"4761756\n"); - end - FInput1E = 64'h43EF4FC400000000; - FInput2E = 64'h2B525C1 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"4762757\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1DFC000000000000; - ans = 64'h0FFFFE 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,"4763758\n"); - end - FInput1E = 64'h3FCEFFFF00000000; - FInput2E = 64'hFFFE000 00000000; - FInput3E = 64'hF9CED3E500000000; - ans = 64'hF9B7D0 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,"4764759\n"); - end - FInput1E = 64'hC000000000000000; - 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,"4765760\n"); - end - FInput1E = 64'hB130000800000000; - FInput2E = 64'h000FFFF 00000000; - FInput3E = 64'h0500800300000000; - 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,"4766761\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - 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,"4767762\n"); - end - FInput1E = 64'h261FFFF800000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'hBC00000000000000; - ans = 64'h100040 C00000000; - 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,"4768763\n"); - end - FInput1E = 64'hC1493F9800000000; - FInput2E = 64'hFA25124 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,"4769764\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFCE000FF00000000; - 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,"4770765\n"); - end - FInput1E = 64'hC02FFFFF00000000; - FInput2E = 64'h800003E 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,"4771766\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3F00001F00000000; - ans = 64'hFFFFFA 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,"4772767\n"); - end - FInput1E = 64'h41F969FC00000000; - FInput2E = 64'h636908A 00000000; - FInput3E = 64'h3F00000800000000; - ans = 64'h000007 C00000000; - flags = 5'h3A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3A "); - $fwrite(fp,"4773768\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 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,"4774769\n"); - end - FInput1E = 64'hBFC5C19E00000000; - FInput2E = 64'hEC19227 00000000; - FInput3E = 64'hFF3FFFFF00000000; - ans = 64'hFBFFFF 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,"4775770\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 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,"4776771\n"); - end - FInput1E = 64'hFFFFFEFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'hFF07FFFF00000000; - ans = 64'hFFFFE0 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,"4777772\n"); - end - FInput1E = 64'hFFDE1DA700000000; - FInput2E = 64'h73DA159 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,"4778773\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h4A00000000000000; - ans = 64'h000080 B00000000; - 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,"4779774\n"); - end - FInput1E = 64'h3EAF7BFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"4780775\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h72D024CE00000000; - ans = 64'h3B27B2 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,"4781776\n"); - end - FInput1E = 64'h403F000000000000; - FInput2E = 64'h007FFFE 00000000; - FInput3E = 64'h000003FD00000000; - 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,"4782777\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 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,"4783778\n"); - end - FInput1E = 64'h0ECFC00000000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h7EFFF00000000000; - 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,"4784779\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 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,"4785780\n"); - end - FInput1E = 64'hBFF43FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF057FC200000000; - ans = 64'hA4BF39 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,"4786781\n"); - end - FInput1E = 64'h4022D91F00000000; - FInput2E = 64'h4184952 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,"4787782\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF40A19F00000000; - ans = 64'h7ED330 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,"4788783\n"); - end - FInput1E = 64'h41C1A2AC00000000; - FInput2E = 64'h3AEFE57 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 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,"4789784\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hEDFFFFF800000000; - ans = 64'h3FFFFF 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,"4790785\n"); - end - FInput1E = 64'h7FF1261700000000; - FInput2E = 64'h5179CB6 00000000; - FInput3E = 64'h03FF800000000000; - ans = 64'h000003 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,"4791786\n"); - end - FInput1E = 64'hC000000000000000; - 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,"4792787\n"); - end - FInput1E = 64'hB81FFFFF00000000; - FInput2E = 64'hFFFF7F0 00000000; - FInput3E = 64'hB1F5B8C200000000; - ans = 64'h8F2C74 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,"4793788\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 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,"4794789\n"); - end - FInput1E = 64'hDB5FFBFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFF7FF 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,"4795790\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h0003FEE 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,"4796791\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE9D625D00000000; - ans = 64'hF2EE96 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,"4797792\n"); - end - FInput1E = 64'hFFD03FFF00000000; - FInput2E = 64'hFFFFEFE 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,"4798793\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h03FFFF0000000000; - 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,"4799794\n"); - end - FInput1E = 64'h41E3FFFE00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3EFFFFF000000000; - ans = 64'h007FFE 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,"4800795\n"); - end - FInput1E = 64'hC000000000000000; - 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,"4801796\n"); - end - FInput1E = 64'hC1F1FFBF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF6E8FDB00000000; - ans = 64'hD59A05 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,"4802797\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"4803798\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFC3FFF 00000000; - FInput3E = 64'hE200000000000000; - ans = 64'hFFFBFE 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,"4804799\n"); - end - FInput1E = 64'h3FBFC3F200000000; - FInput2E = 64'h591BA3D 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,"4805800\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02D38EDA00000000; - ans = 64'h9AE102 700000000; - 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,"4806801\n"); - end - FInput1E = 64'h41EFFFFF00000000; - FInput2E = 64'hFFFDFFF 00000000; - FInput3E = 64'hFE00000000000000; - 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,"4807802\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1D23FF3F00000000; - ans = 64'hB4B6C8 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,"4808803\n"); - end - FInput1E = 64'h001FFFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h030001FF00000000; - ans = 64'hFFFFFF 300000000; - 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,"4809804\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 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,"4810805\n"); - end - FInput1E = 64'h47ED4AE900000000; - FInput2E = 64'h5957E89 00000000; - FInput3E = 64'hFEC7AF0B00000000; - ans = 64'hB324D4 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,"4811806\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000000 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,"4812807\n"); - end - FInput1E = 64'h4C8CEB0E00000000; - FInput2E = 64'h4E47D5D 00000000; - FInput3E = 64'hEAD1C3EF00000000; - ans = 64'h480AEA 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,"4813808\n"); - end - FInput1E = 64'h41C0000100000000; - FInput2E = 64'h000FFFE 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,"4814809\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFDF800 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,"4815810\n"); - end - FInput1E = 64'h4000000000000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 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,"4816811\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h8100000100000000; - 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,"4817812\n"); - end - FInput1E = 64'h0000000000000000; - FInput2E = 64'h0001FFF 00000000; - FInput3E = 64'h7E83071B00000000; - ans = 64'h11CF35 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,"4818813\n"); - end - FInput1E = 64'hC000000000000000; - 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,"4819814\n"); - end - FInput1E = 64'hC7FFE00000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h22FFFF7D00000000; - 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,"4820815\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 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,"4821816\n"); - end - FInput1E = 64'h403DFFFF00000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'hD23DDBBC00000000; - ans = 64'h6728A8 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,"4822817\n"); - end - FInput1E = 64'h5267262C00000000; - FInput2E = 64'h885F879 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,"4823818\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7F000FFF00000000; - ans = 64'hFFFFFF 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,"4824819\n"); - end - FInput1E = 64'hBFD0020000000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - 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,"4825820\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h4BBFFFFF00000000; - 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,"4826821\n"); - end - FInput1E = 64'hBF006E4B00000000; - FInput2E = 64'h2F18EF1 00000000; - FInput3E = 64'h6CFFFFFC00000000; - ans = 64'h00007E C00000000; - 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,"4827822\n"); - end - FInput1E = 64'hC000000000000000; - 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,"4828823\n"); - end - FInput1E = 64'h40479E1F00000000; - FInput2E = 64'hD286AE5 00000000; - FInput3E = 64'h3C9404BC00000000; - ans = 64'h5379F8 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,"4829824\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 800000000; - 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,"4830825\n"); - end - FInput1E = 64'hDFFCA09000000000; - FInput2E = 64'hE2E362A 00000000; - FInput3E = 64'h84FFFC0000000000; - ans = 64'h00FFFE 500000000; - 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,"4831826\n"); - end - FInput1E = 64'hC060002000000000; - FInput2E = 64'h1FFFFFF 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,"4832827\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hDDFFFF7F00000000; - ans = 64'hFFFFF8 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,"4833828\n"); - end - FInput1E = 64'h5783FFFF00000000; - FInput2E = 64'hFFFFC00 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,"4834829\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h55B0BC2F00000000; - ans = 64'h6A19CD 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,"4835830\n"); - end - FInput1E = 64'hC14E07FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7EFFFFFF00000000; - ans = 64'hF7FFFD 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,"4836831\n"); - end - FInput1E = 64'hC000000000000000; - 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,"4837832\n"); - end - FInput1E = 64'hBFD0000100000000; - FInput2E = 64'h0000080 00000000; - FInput3E = 64'h8500007F00000000; - 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,"4838833\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - 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,"4839834\n"); - end - FInput1E = 64'h3A0FFFFF00000000; - FInput2E = 64'h8003FFF 00000000; - FInput3E = 64'h00F8000000000000; - ans = 64'h100000 C00000000; - 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,"4840835\n"); - end - FInput1E = 64'h41C4002000000000; - FInput2E = 64'h0000000 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,"4841836\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3F00000000000000; - ans = 64'h007DFF 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,"4842837\n"); - end - FInput1E = 64'h38F0000000000000; - FInput2E = 64'h2010000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 B00000000; - flags = 5'hA4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A4 "); - $fwrite(fp,"4843838\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3CFFFBFF00000000; - ans = 64'h7FFFFF 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,"4844839\n"); - end - FInput1E = 64'h001103B600000000; - FInput2E = 64'hC17C637 00000000; - FInput3E = 64'h6B00000300000000; - ans = 64'hFFFFF0 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,"4845840\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 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,"4846841\n"); - end - FInput1E = 64'hC1C5A10300000000; - FInput2E = 64'hA4EE152 00000000; - FInput3E = 64'h81FFFFEF00000000; - ans = 64'hFEFFFE 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,"4847842\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 E00000000; - 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,"4848843\n"); - end - FInput1E = 64'h4030008000000000; - FInput2E = 64'h00007FF 00000000; - FInput3E = 64'hE34C68F800000000; - ans = 64'hEE957A 900000000; - 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,"4849844\n"); - end - FInput1E = 64'hC220000500000000; - FInput2E = 64'hFFFFFFF 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,"4850845\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF3FFFEFF00000000; - ans = 64'hFDFFFF 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,"4851846\n"); - end - FInput1E = 64'hC3E0000000000000; - FInput2E = 64'h0000EFE 00000000; - FInput3E = 64'h0100000000000000; - 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,"4852847\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h16FFFFFF00000000; - ans = 64'h0007FF 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,"4853848\n"); - end - FInput1E = 64'h3F90000300000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'hF3FFFFFF00000000; - ans = 64'hBF7FFF 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,"4854849\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 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,"4855850\n"); - end - FInput1E = 64'hC06001F800000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h57205DAE00000000; - ans = 64'h6705DD 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,"4856851\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 300000000; - 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,"4857852\n"); - end - FInput1E = 64'h6B207FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h210DB73500000000; - ans = 64'h09496F 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,"4858853\n"); - end - FInput1E = 64'hD60FFFE000000000; - FInput2E = 64'h00001FF 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,"4859854\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h01000FFF00000000; - ans = 64'hFFFDFE 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,"4860855\n"); - end - FInput1E = 64'h47EFF7FB00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 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,"4861856\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFF0003 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,"4862857\n"); - end - FInput1E = 64'h1BF0000000000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'h0000021F00000000; - ans = 64'hFFFFFF 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,"4863858\n"); - end - FInput1E = 64'hC000000000000000; - 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,"4864859\n"); - end - FInput1E = 64'h4C0FFFE000000000; - FInput2E = 64'h1000000 00000000; - FInput3E = 64'h2AFFC00000000000; - ans = 64'h0001FF 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,"4865860\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 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,"4866861\n"); - end - FInput1E = 64'h4030200000000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hFDF7FE 300000000; - 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,"4867862\n"); - end - FInput1E = 64'h290FFEFF00000000; - FInput2E = 64'hFFFFDFF 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,"4868863\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hB6FFFF8100000000; - ans = 64'h000000 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,"4869864\n"); - end - FInput1E = 64'h2280000000000000; - FInput2E = 64'h7800000 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,"4870865\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h13F0040000000000; - 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,"4871866\n"); - end - FInput1E = 64'h37EFDFFF00000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'h19FFF6FF00000000; - ans = 64'hFFFFFF 300000000; - 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,"4872867\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 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,"4873868\n"); - end - FInput1E = 64'hCC407FFF00000000; - FInput2E = 64'hFFFF7FE 00000000; - FInput3E = 64'h4000004100000000; - 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,"4874869\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - flags = 5'hA4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A4 "); - $fwrite(fp,"4875870\n"); - end - FInput1E = 64'hBF8B49E500000000; - FInput2E = 64'h931C10C 00000000; - FInput3E = 64'h0000800000000000; - ans = 64'h3FFFFE 400000000; - 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,"4876871\n"); - end - FInput1E = 64'h0010001F00000000; - FInput2E = 64'hFFFFEFF 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,"4877872\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1C07FFFF00000000; - ans = 64'hFEFFFF 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,"4878873\n"); - end - FInput1E = 64'h38103BFF00000000; - 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,"4879874\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF5FFFDFF00000000; - 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,"4880875\n"); - end - FInput1E = 64'h3E90000000000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hD2FFFFFF00000000; - ans = 64'h7EFFFE 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,"4881876\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0000001 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,"4882877\n"); - end - FInput1E = 64'hB7E0804000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h0FFF7F 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,"4883878\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4884879\n"); - end - FInput1E = 64'h406FC48A00000000; - FInput2E = 64'h30035B7 00000000; - FInput3E = 64'h3F00000000000000; - ans = 64'h7FFFE0 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,"4885880\n"); - end - FInput1E = 64'hC3F00FFF00000000; - FInput2E = 64'hFF7FFFF 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,"4886881\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00100000000000; - ans = 64'h00003F 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,"4887882\n"); - end - FInput1E = 64'h3FAC204000000000; - FInput2E = 64'hE35DDF9 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 400000000; - 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,"4888883\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h08FE000000000000; - 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,"4889884\n"); - end - FInput1E = 64'hC4EB8AE500000000; - FInput2E = 64'hB0BFE04 00000000; - FInput3E = 64'hCA00FFFF00000000; - ans = 64'h7FFFFF 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,"4890885\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4891886\n"); - end - FInput1E = 64'hFCF0000000000000; - FInput2E = 64'h00003E0 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hC02000 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,"4892887\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - 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,"4893888\n"); - end - FInput1E = 64'hCCDFFFC000000000; - FInput2E = 64'h0800000 00000000; - FInput3E = 64'hFEF1892100000000; - ans = 64'h603EB8 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,"4894889\n"); - end - FInput1E = 64'h4730000000000000; - FInput2E = 64'h000006F 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,"4895890\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h14FFFFFF00000000; - ans = 64'hDBFFFE 300000000; - 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,"4896891\n"); - end - FInput1E = 64'hFABFE00000000000; - FInput2E = 64'h0040000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 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,"4897892\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h007D8F2E00000000; - ans = 64'h1F9595 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,"4898893\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFF7C000 00000000; - FInput3E = 64'h0201000000000000; - ans = 64'h001000 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,"4899894\n"); - end - FInput1E = 64'hC00FFFFF00000000; - 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,"4900895\n"); - end - FInput1E = 64'h7FDFFE0000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h81FFFE0000000000; - ans = 64'h00003F 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,"4901896\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 400000000; - 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,"4902897\n"); - end - FInput1E = 64'hC410000100000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'hB43FFFFF00000000; - ans = 64'hFFBFFF 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,"4903898\n"); - end - FInput1E = 64'h52B0000000000000; - FInput2E = 64'h0000000 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,"4904899\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h35FF7FFF00000000; - ans = 64'hFFFFC0 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,"4905900\n"); - end - FInput1E = 64'h4E60000100000000; - FInput2E = 64'hFFEFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 300000000; - 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,"4906901\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h010007FF00000000; - ans = 64'hFEFFFE 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,"4907902\n"); - end - FInput1E = 64'h3FE0100000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF007FFF00000000; - ans = 64'hFFF000 B00000000; - 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,"4908903\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4909904\n"); - end - FInput1E = 64'h3FEFFFFF00000000; - FInput2E = 64'hFFFFCFF 00000000; - FInput3E = 64'h7FEFFFFF00000000; - ans = 64'hFFFF00 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,"4910905\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - 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,"4911906\n"); - end - FInput1E = 64'hBCA7F12C00000000; - FInput2E = 64'h4F52468 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hBFFFF8 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,"4912907\n"); - end - FInput1E = 64'h403C961600000000; - FInput2E = 64'h6FA57FB 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,"4913908\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hEE4469C000000000; - ans = 64'hD50051 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,"4914909\n"); - end - FInput1E = 64'hC7F0000000000000; - FInput2E = 64'hFFFF800 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,"4915910\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF8D7AEF900000000; - ans = 64'h98FABB 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,"4916911\n"); - end - FInput1E = 64'hBB53A90700000000; - FInput2E = 64'hDEB1E20 00000000; - FInput3E = 64'h38FFFFC000000000; - 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,"4917912\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4918913\n"); - end - FInput1E = 64'hB5C4000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E1C03E900000000; - ans = 64'hF7E3F6 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,"4919914\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 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,"4920915\n"); - end - FInput1E = 64'hC33DCE7800000000; - FInput2E = 64'h67A59C7 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFC0 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,"4921916\n"); - end - FInput1E = 64'h41C86B3F00000000; - FInput2E = 64'h5FC95EC 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,"4922917\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hE404000000000000; - ans = 64'h000010 400000000; - 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,"4923918\n"); - end - FInput1E = 64'h800FFFFE00000000; - FInput2E = 64'h0FFFFFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 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,"4924919\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h59FFF3FF00000000; - 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,"4925920\n"); - end - FInput1E = 64'h3F6BB94500000000; - FInput2E = 64'hC4A986C 00000000; - FInput3E = 64'h3D00200000000000; - ans = 64'h00FFFF 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,"4926921\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4927922\n"); - end - FInput1E = 64'h37E0000000000000; - FInput2E = 64'h01FFDFE 00000000; - FInput3E = 64'hEB00000000000000; - ans = 64'h400008 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,"4928923\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 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,"4929924\n"); - end - FInput1E = 64'hC1E0017F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3CF8000000000000; - ans = 64'h3FFFFF 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,"4930925\n"); - end - FInput1E = 64'h37E529AA00000000; - FInput2E = 64'hF0EE740 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,"4931926\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB7BBD05400000000; - ans = 64'hCD5339 900000000; - 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,"4932927\n"); - end - FInput1E = 64'hC02FFFFB00000000; - FInput2E = 64'hFBFFFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 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,"4933928\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB201000F00000000; - 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,"4934929\n"); - end - FInput1E = 64'h002FFFFF00000000; - FInput2E = 64'hFF7FDFE 00000000; - FInput3E = 64'h04BFFFFF00000000; - ans = 64'hFFFFEF 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,"4935930\n"); - end - FInput1E = 64'hC00FFFFF00000000; - 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,"4936931\n"); - end - FInput1E = 64'hEE52000000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1328B48C00000000; - ans = 64'h11072D 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,"4937932\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 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,"4938933\n"); - end - FInput1E = 64'h402FF6FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h49510D2000000000; - ans = 64'h4718F7 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,"4939934\n"); - end - FInput1E = 64'h3FB2200000000000; - FInput2E = 64'h0000000 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,"4940935\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h766981A500000000; - ans = 64'h9047AA 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,"4941936\n"); - end - FInput1E = 64'h3713E8E300000000; - FInput2E = 64'h1E6CAE4 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 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,"4942937\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h31AD964B00000000; - ans = 64'h884DDB 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,"4943938\n"); - end - FInput1E = 64'hC3EFFFFF00000000; - FInput2E = 64'hFFF7EFF 00000000; - FInput3E = 64'h3C512A1400000000; - ans = 64'h557DF3 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,"4944939\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4945940\n"); - end - FInput1E = 64'hBA8B940900000000; - FInput2E = 64'hB2DB4C8 00000000; - FInput3E = 64'h0100008000000000; - ans = 64'h1FFFFF 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,"4946941\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"4947942\n"); - end - FInput1E = 64'h439FFFFF00000000; - FInput2E = 64'hFFBFE00 00000000; - FInput3E = 64'h00CE3FE500000000; - ans = 64'hB77855 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,"4948943\n"); - end - FInput1E = 64'h381DF32B00000000; - FInput2E = 64'hF95E762 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,"4949944\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFCFE000000000000; - ans = 64'h001000 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,"4950945\n"); - end - FInput1E = 64'hA4B0004000000000; - FInput2E = 64'h0001FFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"4951946\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF7FFFFFE00000000; - ans = 64'hFFFFFD 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,"4952947\n"); - end - FInput1E = 64'h35FFFFFF00000000; - FInput2E = 64'h0001000 00000000; - FInput3E = 64'h3D0101FF00000000; - 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,"4953948\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4954949\n"); - end - FInput1E = 64'hCC35739600000000; - FInput2E = 64'hB8CBBAE 00000000; - FInput3E = 64'hF800000000000000; - ans = 64'hFF7FFF 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,"4955950\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4956951\n"); - end - FInput1E = 64'h1EEFFFFF00000000; - FInput2E = 64'hFFFFE40 00000000; - FInput3E = 64'hFAFFFFFF00000000; - ans = 64'hF5FFFE 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,"4957952\n"); - end - FInput1E = 64'hC1F796AC00000000; - FInput2E = 64'hFFE8725 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,"4958953\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0AFFFFC000000000; - ans = 64'h008000 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,"4959954\n"); - end - FInput1E = 64'h41CFFFFF00000000; - FInput2E = 64'hFFFEFEF 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,"4960955\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0EFFC00000000000; - ans = 64'h0FFFFF 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,"4961956\n"); - end - FInput1E = 64'hBFD0100000000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hEFFFFF 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,"4962957\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4963958\n"); - end - FInput1E = 64'h06C0000000000000; - FInput2E = 64'h0000042 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hBFFFFB 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,"4964959\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - 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,"4965960\n"); - end - FInput1E = 64'hBFA0040000000000; - FInput2E = 64'h000003F 00000000; - FInput3E = 64'hFE04000000000000; - 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,"4966961\n"); - end - FInput1E = 64'hC1DBF9FC00000000; - FInput2E = 64'h6FD1F41 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,"4967962\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB40000000000000; - ans = 64'h0FFFFF 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,"4968963\n"); - end - FInput1E = 64'hC1FE000000000000; - FInput2E = 64'h01FFFFF 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,"4969964\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00020000000000; - ans = 64'h00000F 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,"4970965\n"); - end - FInput1E = 64'h678F2F6600000000; - FInput2E = 64'h608AB65 00000000; - FInput3E = 64'h3C1FFFFF00000000; - ans = 64'h7FFFFF 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,"4971966\n"); - end - FInput1E = 64'hC00FFFFF00000000; - 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,"4972967\n"); - end - FInput1E = 64'hC03FFFFF00000000; - FInput2E = 64'hFDFFFFE 00000000; - FInput3E = 64'hEB514F3C00000000; - ans = 64'h515E26 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,"4973968\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 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,"4974969\n"); - end - FInput1E = 64'h77A033D400000000; - FInput2E = 64'h33513D5 00000000; - FInput3E = 64'hB0FFFFFF00000000; - ans = 64'hFFFFDE 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,"4975970\n"); - end - FInput1E = 64'hC0FFFFFF00000000; - FInput2E = 64'hFFFF3FF 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,"4976971\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFCDFFBFF00000000; - 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,"4977972\n"); - end - FInput1E = 64'hBFA0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000000 500000000; - 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,"4978973\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'hC00000 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,"4979974\n"); - end - FInput1E = 64'h41C0080000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00020000000000; - ans = 64'h3FFFFF 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,"4980975\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4981976\n"); - end - FInput1E = 64'h400BFF7300000000; - FInput2E = 64'hD9AF89E 00000000; - FInput3E = 64'h1FFFFFFF00000000; - ans = 64'hFFBFFE 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,"4982977\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - 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,"4983978\n"); - end - FInput1E = 64'hB7FA000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hFFFF90 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,"4984979\n"); - end - FInput1E = 64'hBB83FFFE00000000; - FInput2E = 64'hFFFFFFF 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,"4985980\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D00000000000000; - ans = 64'h04001F 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,"4986981\n"); - end - FInput1E = 64'h4036F40B00000000; - FInput2E = 64'h9F5CC2B 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"4987982\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F80000000000000; - ans = 64'h00FFFF 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,"4988983\n"); - end - FInput1E = 64'hBFBE000400000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF1FFBFBF00000000; - 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,"4989984\n"); - end - FInput1E = 64'hC00FFFFF00000000; - 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,"4990985\n"); - end - FInput1E = 64'h37E0000000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hEFFBFDFF00000000; - 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,"4991986\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - 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,"4992987\n"); - end - FInput1E = 64'h3F027FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hFE4000 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,"4993988\n"); - end - FInput1E = 64'hB80FFFFF00000000; - FInput2E = 64'hFFFF77F 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,"4994989\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1C01040000000000; - 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,"4995990\n"); - end - FInput1E = 64'hBFFC4D1900000000; - FInput2E = 64'h56BA8DB 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,"4996991\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h007EFFFF00000000; - 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,"4997992\n"); - end - FInput1E = 64'h52E8693B00000000; - FInput2E = 64'h208E5ED 00000000; - FInput3E = 64'h1E001FFF00000000; - ans = 64'hFFFEFF 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,"4998993\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"4999994\n"); - end - FInput1E = 64'hA3BFFFFF00000000; - FInput2E = 64'hFFF4000 00000000; - FInput3E = 64'hFCFFFFFE00000000; - ans = 64'hFFFFF6 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,"5000995\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - 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,"5001996\n"); - end - FInput1E = 64'hC3C1A56600000000; - FInput2E = 64'hD0B3C9B 00000000; - FInput3E = 64'h3F00001000000000; - ans = 64'h000000 300000000; - flags = 5'hA4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A4 "); - $fwrite(fp,"5002997\n"); - end - FInput1E = 64'hC004F4F900000000; - FInput2E = 64'hDA3F266 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,"5003998\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h02B565EB00000000; - ans = 64'h8C06B6 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,"5004999\n"); - end - FInput1E = 64'h3FE7B0B500000000; - FInput2E = 64'hEA7DE4B 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5006000\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFDFFFFF700000000; - ans = 64'hF80000 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,"5007001\n"); - end - FInput1E = 64'hA8FFFFFF00000000; - FInput2E = 64'hDFFFEFF 00000000; - FInput3E = 64'hFE32233300000000; - ans = 64'h1753C8 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,"5008002\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5009003\n"); - end - FInput1E = 64'h41F0001000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02F7FFFF00000000; - ans = 64'hBFFFFE 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,"5010004\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 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,"5011005\n"); - end - FInput1E = 64'h3C6FFE0000000000; - FInput2E = 64'h000FFFE 00000000; - FInput3E = 64'h05FEFFDF00000000; - 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,"5012006\n"); - end - FInput1E = 64'hE0CFF80000000000; - FInput2E = 64'h003FFFF 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,"5013007\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h03FFFBFB00000000; - 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,"5014008\n"); - end - FInput1E = 64'hC0B2CB1100000000; - FInput2E = 64'hB9635CA 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 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,"5015009\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7EFC000000000000; - ans = 64'h00007F 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,"5016010\n"); - end - FInput1E = 64'hC1F5A6AC00000000; - FInput2E = 64'h565AA57 00000000; - FInput3E = 64'h065D9CBE00000000; - ans = 64'h6B8334 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,"5017011\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5018012\n"); - end - FInput1E = 64'h3FDEFFFF00000000; - FInput2E = 64'hFDFFFFE 00000000; - FInput3E = 64'hFD0DFFFF00000000; - 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,"5019013\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - 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,"5020014\n"); - end - FInput1E = 64'h40CDFFFF00000000; - FInput2E = 64'hF800000 00000000; - FInput3E = 64'h03FFFE0000000000; - ans = 64'h01FFFF 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,"5021015\n"); - end - FInput1E = 64'h3F3FFFEF00000000; - FInput2E = 64'hFBFFFFF 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,"5022016\n"); - end - FInput1E = 64'hC00FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1DBFFBFF00000000; - 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,"5023017\n"); - end - FInput1E = 64'h63FFFFFF00000000; - FInput2E = 64'hFFF5FFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - 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,"5024018\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hE3FFFFE700000000; - 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,"5025019\n"); - end - FInput1E = 64'hC03FFFF700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000F00000000; - ans = 64'hFFFEFE 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,"5026020\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 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,"5027021\n"); - end - FInput1E = 64'hC080000000000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'hFCFFF00000000000; - ans = 64'h01FFFF 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,"5028022\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"5029023\n"); - end - FInput1E = 64'hFFEFFFFC00000000; - FInput2E = 64'h1FFFFFE 00000000; - FInput3E = 64'h3D00000000000000; - ans = 64'h000000 300000000; - 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,"5030024\n"); - end - FInput1E = 64'hC1EA393300000000; - FInput2E = 64'hD94DC76 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,"5031025\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1804000000000000; - ans = 64'h0007FF 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,"5032026\n"); - end - FInput1E = 64'h40F2000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - 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,"5033027\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100100000000000; - ans = 64'h00003F 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,"5034028\n"); - end - FInput1E = 64'hCC00200000000000; - FInput2E = 64'h0020000 00000000; - FInput3E = 64'h3D00000300000000; - ans = 64'hDFFFFF 400000000; - flags = 5'h3A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3A "); - $fwrite(fp,"5035029\n"); - end - FInput1E = 64'hC010000000000000; - 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,"5036030\n"); - end - FInput1E = 64'hCC8FFE0000000000; - FInput2E = 64'h0000003 00000000; - FInput3E = 64'hED08F03400000000; - ans = 64'h25218B 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,"5037031\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 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,"5038032\n"); - end - FInput1E = 64'h4000004000000000; - FInput2E = 64'h00000FE 00000000; - FInput3E = 64'hA700000000000000; - ans = 64'h08003E 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,"5039033\n"); - end - FInput1E = 64'h801FFFFF00000000; - FInput2E = 64'hFEFFFBF 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,"5040034\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3C00020000000000; - ans = 64'h3FFFFE 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,"5041035\n"); - end - FInput1E = 64'h4070003F00000000; - FInput2E = 64'hFFC0000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 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,"5042036\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFC00100000000000; - ans = 64'h000020 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,"5043037\n"); - end - FInput1E = 64'h670E2F0B00000000; - FInput2E = 64'h2FF1823 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h000002 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,"5044038\n"); - end - FInput1E = 64'hC010000000000000; - 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,"5045039\n"); - end - FInput1E = 64'h8020000000000000; - FInput2E = 64'hFDFFFFF 00000000; - FInput3E = 64'h1E1D9E1F00000000; - ans = 64'hC0A8BE 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,"5046040\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 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,"5047041\n"); - end - FInput1E = 64'hBFF001FF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h8103FFFF00000000; - 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,"5048042\n"); - end - FInput1E = 64'h7FF0000F00000000; - FInput2E = 64'hFFFBFFE 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,"5049043\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h142B65B000000000; - ans = 64'h2AC49C 700000000; - 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,"5050044\n"); - end - FInput1E = 64'h4670791400000000; - FInput2E = 64'h14EF9A2 00000000; - FInput3E = 64'h34FFFFFF00000000; - 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,"5051045\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3E0007FF00000000; - 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,"5052046\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFF87F 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hFFC3FF 300000000; - 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,"5053047\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 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,"5054048\n"); - end - FInput1E = 64'h3FCFC00000000000; - FInput2E = 64'h00000FF 00000000; - FInput3E = 64'h25003FBF00000000; - 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,"5055049\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 400000000; - 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,"5056050\n"); - end - FInput1E = 64'h37F0000000000000; - FInput2E = 64'h007FFFB 00000000; - FInput3E = 64'h81FF800700000000; - 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,"5057051\n"); - end - FInput1E = 64'h3FDFFFFF00000000; - FInput2E = 64'hEFFFFEF 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,"5058052\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3EFFFF7F00000000; - ans = 64'hFFFFFF B00000000; - flags = 5'hA4; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"A4 "); - $fwrite(fp,"5059053\n"); - end - FInput1E = 64'h7FEE1FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 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,"5060054\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h37FF00FF00000000; - 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,"5061055\n"); - end - FInput1E = 64'h875A2E1C00000000; - FInput2E = 64'hCE13E78 00000000; - FInput3E = 64'h04FFF80000000000; - ans = 64'h000007 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,"5062056\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 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,"5063057\n"); - end - FInput1E = 64'h30AFFFFF00000000; - FInput2E = 64'hFFEFFF6 00000000; - FInput3E = 64'h14A2E3A600000000; - ans = 64'h6B4242 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,"5064058\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 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,"5065059\n"); - end - FInput1E = 64'h8690000000000000; - FInput2E = 64'h2000020 00000000; - FInput3E = 64'hFCFFBFFF00000000; - ans = 64'hFFFFFF 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,"5066060\n"); - end - FInput1E = 64'hC50FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5067061\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h06FF7FFF00000000; - ans = 64'hFDFFFF E00000000; - 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,"5068062\n"); - end - FInput1E = 64'h312B1CF700000000; - FInput2E = 64'h0590E03 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,"5069063\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h000090 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,"5070064\n"); - end - FInput1E = 64'h406D28D600000000; - FInput2E = 64'h40A272B 00000000; - FInput3E = 64'h7F00081F00000000; - 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,"5071065\n"); - end - FInput1E = 64'hC010000000000000; - 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,"5072066\n"); - end - FInput1E = 64'hBFF0000200000000; - FInput2E = 64'h001FFFE 00000000; - FInput3E = 64'h3000000200000000; - ans = 64'h00003E 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,"5073067\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 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,"5074068\n"); - end - FInput1E = 64'hFFFBFFFF00000000; - FInput2E = 64'hFFFF800 00000000; - FInput3E = 64'h0164329800000000; - ans = 64'h2F2921 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,"5075069\n"); - end - FInput1E = 64'h47F003FF00000000; - FInput2E = 64'hFFFBFFF 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,"5076070\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h67000FFF00000000; - ans = 64'hFFF7FF 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,"5077071\n"); - end - FInput1E = 64'h43EFFFF800000000; - FInput2E = 64'h000001F 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 C00000000; - 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,"5078072\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h807D0A7800000000; - ans = 64'h4B7F1D 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,"5079073\n"); - end - FInput1E = 64'hBC0003FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFB2656AF00000000; - ans = 64'hB0ABCE 200000000; - flags = 5'h52; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"52 "); - $fwrite(fp,"5080074\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 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,"5081075\n"); - end - FInput1E = 64'hE91583A200000000; - FInput2E = 64'h2391B9E 00000000; - FInput3E = 64'hFD8ACA4400000000; - ans = 64'h13B78D 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,"5082076\n"); - end - FInput1E = 64'hC010000000000000; - 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,"5083077\n"); - end - FInput1E = 64'hC020000000000000; - FInput2E = 64'h0008400 00000000; - FInput3E = 64'h0100001000000000; - ans = 64'h00007F 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,"5084078\n"); - end - FInput1E = 64'hC3EA8EC200000000; - FInput2E = 64'hAB1E168 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,"5085079\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3500007F00000000; - ans = 64'hF7FFFF 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,"5086080\n"); - end - FInput1E = 64'h3B0FFFFF00000000; - FInput2E = 64'hDFFF7FE 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,"5087081\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3F40001000000000; - 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,"5088082\n"); - end - FInput1E = 64'hC03B19E200000000; - FInput2E = 64'hAE6BB20 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h0FFFFE 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,"5089083\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 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,"5090084\n"); - end - FInput1E = 64'hC005708600000000; - FInput2E = 64'h92F2843 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hBFFFBF 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,"5091085\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5092086\n"); - end - FInput1E = 64'h40E0000800000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'h0010000000000000; - ans = 64'h03FFFF 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,"5093087\n"); - end - FInput1E = 64'hC1EEE0BA00000000; - FInput2E = 64'h9BAC2B5 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,"5094088\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h001C00 900000000; - 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,"5095089\n"); - end - FInput1E = 64'h42CD00A400000000; - FInput2E = 64'h31E6394 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,"5096090\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFEB26E5B00000000; - ans = 64'h84AEC7 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,"5097091\n"); - end - FInput1E = 64'h3F880FFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hF83FFF 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,"5098092\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 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,"5099093\n"); - end - FInput1E = 64'hB7E536F500000000; - FInput2E = 64'h3A1806A 00000000; - FInput3E = 64'h03FFFBFF00000000; - ans = 64'hFFDFFF 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,"5100094\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCAFFFFFF00000000; - 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,"5101095\n"); - end - FInput1E = 64'h3E4FF00000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1D03FFFF00000000; - ans = 64'h7FFFFF 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,"5102096\n"); - end - FInput1E = 64'hBD88A04F00000000; - FInput2E = 64'h69F2D1D 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,"5103097\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFCCCDE800000000; - ans = 64'hADB1B6 B00000000; - flags = 5'h83; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"83 "); - $fwrite(fp,"5104098\n"); - end - FInput1E = 64'hB460000000000000; - FInput2E = 64'h7FFEFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 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,"5105099\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hA2FFFFFF00000000; - ans = 64'hFFFFE4 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,"5106100\n"); - end - FInput1E = 64'hBEB0400000000000; - FInput2E = 64'h0000040 00000000; - FInput3E = 64'hBDBB6A1F00000000; - ans = 64'hED4729 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,"5107101\n"); - end - FInput1E = 64'hC010000000000000; - 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,"5108102\n"); - end - FInput1E = 64'h7FFDE5FA00000000; - FInput2E = 64'hFA8926A 00000000; - FInput3E = 64'h0352080700000000; - ans = 64'h966D21 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,"5109103\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 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,"5110104\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'h0001FFE 00000000; - FInput3E = 64'h3E26871100000000; - ans = 64'h65F6FB 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,"5111105\n"); - end - FInput1E = 64'hD890000000000000; - FInput2E = 64'h0000008 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,"5112106\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCFFFFFFF00000000; - ans = 64'hFFE0FF 000000000; - 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,"5113107\n"); - end - FInput1E = 64'hBD60000100000000; - FInput2E = 64'hFFFFFFE 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,"5114108\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFF02000000000; - 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,"5115109\n"); - end - FInput1E = 64'hB81F4BEA00000000; - FInput2E = 64'hBE01101 00000000; - FInput3E = 64'h05FFFFFF00000000; - ans = 64'h7EFFFE B00000000; - 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,"5116110\n"); - end - FInput1E = 64'hC010000000000000; - 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,"5117111\n"); - end - FInput1E = 64'h32D8F59200000000; - FInput2E = 64'h38CA7C7 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h0003FE 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,"5118112\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - 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,"5119113\n"); - end - FInput1E = 64'hA6FFDFFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h12FFFF7F00000000; - ans = 64'hFFFFF7 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,"5120114\n"); - end - FInput1E = 64'h43D0000000000000; - FInput2E = 64'h00EFFFF 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,"5121115\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7FFFFE0000000000; - ans = 64'h000004 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,"5122116\n"); - end - FInput1E = 64'hFFF2A77200000000; - FInput2E = 64'h322BBD4 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,"5123117\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3C7B65C900000000; - ans = 64'h1C0456 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,"5124118\n"); - end - FInput1E = 64'h0020000000000000; - FInput2E = 64'h03FFFFE 00000000; - FInput3E = 64'h90E1000000000000; - 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,"5125119\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 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,"5126120\n"); - end - FInput1E = 64'hC00FFEFF00000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'hECFFFFFF00000000; - ans = 64'hFFF83E 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,"5127121\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0000000000000000; - 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,"5128122\n"); - end - FInput1E = 64'hC3CFFDFF00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'h81FFF80000000000; - ans = 64'h00003E 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,"5129123\n"); - end - FInput1E = 64'hC05D36A800000000; - FInput2E = 64'hF978781 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,"5130124\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h8DFFFFFF00000000; - ans = 64'hDF0000 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,"5131125\n"); - end - FInput1E = 64'hBFC0000000000000; - FInput2E = 64'h3DFFFFF 00000000; - FInput3E = 64'h0100000000000000; - 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,"5132126\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0008000000000000; - ans = 64'h07FFFE 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,"5133127\n"); - end - FInput1E = 64'hC1CF000000000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'hFF4CFE5C00000000; - ans = 64'h8F27B0 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,"5134128\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 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,"5135129\n"); - end - FInput1E = 64'hB82FFFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0200FFFF00000000; - 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,"5136130\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE 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,"5137131\n"); - end - FInput1E = 64'hD46FFF8000000000; - FInput2E = 64'h0FFFFFF 00000000; - FInput3E = 64'h026B122B00000000; - ans = 64'h238D87 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,"5138132\n"); - end - FInput1E = 64'hC00FFFEF00000000; - FInput2E = 64'hFFFF7FF 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,"5139133\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h001FFF 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,"5140134\n"); - end - FInput1E = 64'h3FBFFFFF00000000; - FInput2E = 64'hFF00007 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 300000000; - 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,"5141135\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1C311C9F00000000; - ans = 64'h4ED2C3 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,"5142136\n"); - end - FInput1E = 64'hFC40000000000000; - FInput2E = 64'h000003E 00000000; - FInput3E = 64'h0BFF800000000000; - ans = 64'h000003 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,"5143137\n"); - end - FInput1E = 64'hC010000000000000; - 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,"5144138\n"); - end - FInput1E = 64'hBF40000000000000; - FInput2E = 64'h000007D 00000000; - FInput3E = 64'h0100000000000000; - 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,"5145139\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 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,"5146140\n"); - end - FInput1E = 64'hB8197E0600000000; - FInput2E = 64'h074515B 00000000; - FInput3E = 64'h038A7C2300000000; - ans = 64'h33AB44 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,"5147141\n"); - end - FInput1E = 64'hC010400000000000; - FInput2E = 64'h2000000 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,"5148142\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hE3FFDFFF00000000; - ans = 64'hFF0000 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,"5149143\n"); - end - FInput1E = 64'hC7FFFFFF00000000; - FInput2E = 64'hFFFDFF7 00000000; - FInput3E = 64'h0100000000000000; - 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,"5150144\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00FFC07F00000000; - 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,"5151145\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFFFFC00 00000000; - FInput3E = 64'h0200002000000000; - ans = 64'hFFFFFF 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,"5152146\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 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,"5153147\n"); - end - FInput1E = 64'hB80FFFFF00000000; - FInput2E = 64'h800FFFE 00000000; - FInput3E = 64'h3E64A64D00000000; - ans = 64'h630CA2 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,"5154148\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h34FFFFFF00000000; - 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,"5155149\n"); - end - FInput1E = 64'h4950000000000000; - FInput2E = 64'h0000FBF 00000000; - FInput3E = 64'h1900000400000000; - ans = 64'h000200 C00000000; - 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,"5156150\n"); - end - FInput1E = 64'h41B0000000000000; - FInput2E = 64'h0010007 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,"5157151\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400401F00000000; - 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,"5158152\n"); - end - FInput1E = 64'hDC5FFFFF00000000; - FInput2E = 64'hF7DFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 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,"5159153\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h03F7FFFF00000000; - ans = 64'hFDFFFE 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,"5160154\n"); - end - FInput1E = 64'h3D4663A500000000; - FInput2E = 64'hC438605 00000000; - FInput3E = 64'h0300021F00000000; - 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,"5161155\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0000001 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,"5162156\n"); - end - FInput1E = 64'h3E21FFFF00000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'hFCFFFFF700000000; - 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,"5163157\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - 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,"5164158\n"); - end - FInput1E = 64'hC3F0000000000000; - FInput2E = 64'h008000F 00000000; - FInput3E = 64'h81DFFFFF00000000; - ans = 64'hFFFFFF 600000000; - 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,"5165159\n"); - end - FInput1E = 64'hC7F72D1300000000; - FInput2E = 64'hA33D32C 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,"5166160\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0DFFFFFC00000000; - 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,"5167161\n"); - end - FInput1E = 64'hC001000000000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"5168162\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8081FFFF00000000; - 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,"5169163\n"); - end - FInput1E = 64'h39F8000000000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'h0997199F00000000; - ans = 64'hE75D09 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,"5170164\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5171165\n"); - end - FInput1E = 64'hFFDFF00000000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hD300000000000000; - ans = 64'h081FFF 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,"5172166\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 400000000; - 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,"5173167\n"); - end - FInput1E = 64'h402D0C8C00000000; - FInput2E = 64'hBD806A3 00000000; - FInput3E = 64'h3400010200000000; - 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,"5174168\n"); - end - FInput1E = 64'hC650000000000000; - FInput2E = 64'h0200004 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,"5175169\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h03FF000700000000; - ans = 64'hFFFFFE 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,"5176170\n"); - end - FInput1E = 64'hBF50000000000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'hFEFFFFFF00000000; - 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,"5177171\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDB823B400000000; - ans = 64'hAC76BB 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,"5178172\n"); - end - FInput1E = 64'hC3EFAF6800000000; - FInput2E = 64'h726F8FD 00000000; - FInput3E = 64'hF4BFFFFF00000000; - ans = 64'hFFFFFF 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,"5179173\n"); - end - FInput1E = 64'hC01FFFFF00000000; - 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,"5180174\n"); - end - FInput1E = 64'h3E12336200000000; - FInput2E = 64'h78A5665 00000000; - FInput3E = 64'h2000000000000000; - ans = 64'h01FFFF 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,"5181175\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 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,"5182176\n"); - end - FInput1E = 64'h002FFEFF00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h1DFEFFFF00000000; - ans = 64'hFFFFFD 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,"5183177\n"); - end - FInput1E = 64'h3030000000000000; - FInput2E = 64'h0000406 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,"5184178\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1000000000000000; - ans = 64'h000020 300000000; - 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,"5185179\n"); - end - FInput1E = 64'hC09C992100000000; - FInput2E = 64'hA1593FA 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 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,"5186180\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0C96287200000000; - ans = 64'hEA56EA 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,"5187181\n"); - end - FInput1E = 64'h47E0000000000000; - FInput2E = 64'h0002FFF 00000000; - FInput3E = 64'hF2BF345400000000; - ans = 64'h82C780 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,"5188182\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5189183\n"); - end - FInput1E = 64'h401EFFFF00000000; - FInput2E = 64'hFF7FFFE 00000000; - FInput3E = 64'h00BE995300000000; - ans = 64'hA91E42 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,"5190184\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FFFFFF00000000; - 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,"5191185\n"); - end - FInput1E = 64'h402FE8DE00000000; - FInput2E = 64'h6B2D333 00000000; - FInput3E = 64'h7F03FFFF00000000; - ans = 64'hFFFDFF 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,"5192186\n"); - end - FInput1E = 64'hC3E413DC00000000; - FInput2E = 64'hEE29162 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,"5193187\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FF007F00000000; - 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,"5194188\n"); - end - FInput1E = 64'h7FE5F34600000000; - FInput2E = 64'h5B96EA6 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 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,"5195189\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1CFFFFFF00000000; - ans = 64'hF7FFEF 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,"5196190\n"); - end - FInput1E = 64'hC7EFFFFF00000000; - FInput2E = 64'hFDFF7FF 00000000; - FInput3E = 64'h02FFFFE000000000; - ans = 64'h000000 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,"5197191\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5198192\n"); - end - FInput1E = 64'hBF1FFFE000000000; - FInput2E = 64'h007FFFE 00000000; - FInput3E = 64'h3E10000000000000; - ans = 64'h400000 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,"5199193\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5200194\n"); - end - FInput1E = 64'hC1EE384400000000; - FInput2E = 64'h5B7D3FE 00000000; - FInput3E = 64'h3E8C8E5E00000000; - ans = 64'h0CD973 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,"5201195\n"); - end - FInput1E = 64'h4020000200000000; - FInput2E = 64'h0000003 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,"5202196\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1AFFFFFE00000000; - ans = 64'h01FFFF B00000000; - 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,"5203197\n"); - end - FInput1E = 64'hC028000000000000; - FInput2E = 64'h0000400 00000000; - FInput3E = 64'hCA00000000000000; - 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,"5204198\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7DC8B19E00000000; - ans = 64'hBEC70C 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,"5205199\n"); - end - FInput1E = 64'hE02FFFFF00000000; - FInput2E = 64'hFFE0000 00000000; - FInput3E = 64'h2A00007E00000000; - ans = 64'hFFFFFF A00000000; - 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,"5206200\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5207201\n"); - end - FInput1E = 64'h0E50000000000000; - FInput2E = 64'h0008008 00000000; - FInput3E = 64'h0800FFFB00000000; - 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,"5208202\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - 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,"5209203\n"); - end - FInput1E = 64'h3FBFFFFF00000000; - FInput2E = 64'hFFF800E 00000000; - FInput3E = 64'h3D72967700000000; - ans = 64'h8E03CE 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,"5210204\n"); - end - FInput1E = 64'hC59FFFFF00000000; - FInput2E = 64'hFFFFF7E 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,"5211205\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1E00004000000000; - ans = 64'h00FFFF 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,"5212206\n"); - end - FInput1E = 64'hC03870CC00000000; - FInput2E = 64'hF02326A 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,"5213207\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFC00001000000000; - 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,"5214208\n"); - end - FInput1E = 64'h41FFFFE000000000; - FInput2E = 64'h0001FFE 00000000; - FInput3E = 64'hFCB9A7B100000000; - ans = 64'h9168EF 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,"5215209\n"); - end - FInput1E = 64'hC01FFFFF00000000; - 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,"5216210\n"); - end - FInput1E = 64'h434D2F4900000000; - FInput2E = 64'hDB9A96E 00000000; - FInput3E = 64'hEEFBFFFF00000000; - 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,"5217211\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5218212\n"); - end - FInput1E = 64'h37F0000000000000; - FInput2E = 64'h04000FE 00000000; - FInput3E = 64'h7EFBFFFF00000000; - ans = 64'hFFFFDF 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,"5219213\n"); - end - FInput1E = 64'h41CFFF7F00000000; - FInput2E = 64'hF7FFFFF 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,"5220214\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h06AE16C300000000; - ans = 64'h1210A0 C00000000; - 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,"5221215\n"); - end - FInput1E = 64'h3F60200100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"5222216\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h8000000700000000; - ans = 64'hFEFFFF 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,"5223217\n"); - end - FInput1E = 64'hB80007FF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'hFEFFFFF700000000; - ans = 64'hFDFFFF 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,"5224218\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5225219\n"); - end - FInput1E = 64'hC1D0000200000000; - FInput2E = 64'h007FFFF 00000000; - FInput3E = 64'h8077BE4D00000000; - ans = 64'h7FE884 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,"5226220\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 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,"5227221\n"); - end - FInput1E = 64'h4740000000000000; - FInput2E = 64'h7FFFFC0 00000000; - FInput3E = 64'h09007FF700000000; - ans = 64'hFFFFFF 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,"5228222\n"); - end - FInput1E = 64'hAD6BF03B00000000; - FInput2E = 64'h5338149 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,"5229223\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hEFFFFFFF00000000; - ans = 64'hC003FF 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,"5230224\n"); - end - FInput1E = 64'hC230000000000000; - FInput2E = 64'h008001F 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5231225\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h91C0000000000000; - ans = 64'h000200 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,"5232226\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'h1000000 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'hFFFDFF 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,"5233227\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5234228\n"); - end - FInput1E = 64'h41C83FFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F78F8B200000000; - ans = 64'h5E6676 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,"5235229\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5236230\n"); - end - FInput1E = 64'h802FFF8000000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'h0100027F00000000; - ans = 64'hFFFFFE 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,"5237231\n"); - end - FInput1E = 64'h640FFFFB00000000; - FInput2E = 64'hF000000 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,"5238232\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000300000000; - 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,"5239233\n"); - end - FInput1E = 64'hC3E0000000000000; - FInput2E = 64'h3FFF7FE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 400000000; - 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,"5240234\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8D7820E500000000; - ans = 64'h58C555 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,"5241235\n"); - end - FInput1E = 64'hBFB0000000000000; - FInput2E = 64'h1000000 00000000; - FInput3E = 64'hE0FFF00000000000; - ans = 64'h000100 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,"5242236\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5243237\n"); - end - FInput1E = 64'h498FF7FF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00000FF700000000; - 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,"5244238\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5245239\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h0040200 00000000; - FInput3E = 64'h7F00040000000000; - ans = 64'h000FFE 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,"5246240\n"); - end - FInput1E = 64'h43FFFFC000000000; - FInput2E = 64'h0003FFE 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,"5247241\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h802000 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,"5248242\n"); - end - FInput1E = 64'h3930000000000000; - FInput2E = 64'h5FFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 800000000; - 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,"5249243\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFC39DF4900000000; - ans = 64'h0FBA49 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,"5250244\n"); - end - FInput1E = 64'hB1A8013900000000; - FInput2E = 64'h3A087CE 00000000; - FInput3E = 64'hBDFFFF0000000000; - ans = 64'h020000 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,"5251245\n"); - end - FInput1E = 64'hC01FFFFF00000000; - 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,"5252246\n"); - end - FInput1E = 64'h41EF000000000000; - FInput2E = 64'h00FFFFE 00000000; - FInput3E = 64'hBB7C000000000000; - 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,"5253247\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 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,"5254248\n"); - end - FInput1E = 64'hA003A93B00000000; - FInput2E = 64'hE92F0B8 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h007FFF 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,"5255249\n"); - end - FInput1E = 64'hC7FFFFFF00000000; - FInput2E = 64'hF000007 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,"5256250\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1FFFFFFF00000000; - ans = 64'hFFE001 200000000; - 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,"5257251\n"); - end - FInput1E = 64'h43EFFFE000000000; - FInput2E = 64'h0000FFF 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,"5258252\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h001FC0 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,"5259253\n"); - end - FInput1E = 64'h3FFFFFC000000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'h07728C3000000000; - ans = 64'hA79599 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,"5260254\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5261255\n"); - end - FInput1E = 64'hC300000000000000; - FInput2E = 64'h1010000 00000000; - FInput3E = 64'hC6753EAA00000000; - ans = 64'hCBF780 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,"5262256\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 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,"5263257\n"); - end - FInput1E = 64'hBFEFE40000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h35FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - 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,"5264258\n"); - end - FInput1E = 64'h35570FA200000000; - FInput2E = 64'hA3939BE 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,"5265259\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h80FFFFFD00000000; - ans = 64'hFFFDFF 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,"5266260\n"); - end - FInput1E = 64'hBFC28DA300000000; - FInput2E = 64'hF44EE71 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,"5267261\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF018D60700000000; - ans = 64'hC13608 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,"5268262\n"); - end - FInput1E = 64'h8011000000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h78553A9600000000; - ans = 64'h4903D4 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,"5269263\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5270264\n"); - end - FInput1E = 64'h0015D34D00000000; - FInput2E = 64'h5242F4B 00000000; - FInput3E = 64'hF8FFF00800000000; - 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,"5271265\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 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,"5272266\n"); - end - FInput1E = 64'hD19FFFFF00000000; - FInput2E = 64'h000000E 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000BFE 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,"5273267\n"); - end - FInput1E = 64'h36A0000000000000; - FInput2E = 64'h1FFFFF7 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,"5274268\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h02FE3D9D00000000; - ans = 64'h256ACF 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,"5275269\n"); - end - FInput1E = 64'hB0A0080000000000; - FInput2E = 64'h07FFFFF 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,"5276270\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF3A14DE00000000; - ans = 64'h5750B4 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,"5277271\n"); - end - FInput1E = 64'h4030000400000000; - FInput2E = 64'h00003FF 00000000; - FInput3E = 64'h1EFFBFFF00000000; - ans = 64'hFFFFFF 500000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"5278272\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5279273\n"); - end - FInput1E = 64'h43E2000000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h00007F 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,"5280274\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5281275\n"); - end - FInput1E = 64'h3DE0001F00000000; - FInput2E = 64'hFFE0000 00000000; - FInput3E = 64'h0210000000000000; - 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,"5282276\n"); - end - FInput1E = 64'h7FE0000000000000; - FInput2E = 64'h07FC000 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,"5283277\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1EFFF7FF00000000; - ans = 64'hFFFFFF 700000000; - 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,"5284278\n"); - end - FInput1E = 64'hA6A03FEF00000000; - FInput2E = 64'hFFFFFFF 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,"5285279\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE01000000000000; - ans = 64'h0003FE 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,"5286280\n"); - end - FInput1E = 64'h271730BA00000000; - FInput2E = 64'h1D8FD2A 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h07FF7F 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,"5287281\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5288282\n"); - end - FInput1E = 64'h4181800000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFF7FF00000000; - 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,"5289283\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 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,"5290284\n"); - end - FInput1E = 64'h5BE0000000000000; - FInput2E = 64'h007EFFF 00000000; - FInput3E = 64'hEFFFFF7F00000000; - ans = 64'hFFFFE0 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,"5291285\n"); - end - FInput1E = 64'h54D0001000000000; - FInput2E = 64'h00001FF 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,"5292286\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h27FFFFEF00000000; - ans = 64'h000000 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,"5293287\n"); - end - FInput1E = 64'h3FBFFFF800000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF F00000000; - flags = 5'h51; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"51 "); - $fwrite(fp,"5294288\n"); - end - FInput1E = 64'hC01FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAF910F000000000; - ans = 64'h1FB519 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,"5295289\n"); - end - FInput1E = 64'hC0C0000400000000; - FInput2E = 64'h07FFFFE 00000000; - FInput3E = 64'hFF003DFF00000000; - 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,"5296290\n"); - end - FInput1E = 64'hC01FFFFF00000000; - 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,"5297291\n"); - end - FInput1E = 64'hCF10000000000000; - FInput2E = 64'h0001000 00000000; - FInput3E = 64'h007D30E200000000; - ans = 64'h538712 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,"5298292\n"); - end - FInput1E = 64'hC01FFFFF00000000; - 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,"5299293\n"); - end - FInput1E = 64'hBFBFFFFF00000000; - FInput2E = 64'hFFFFFE1 00000000; - FInput3E = 64'h0B0FFFEF00000000; - 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,"5300294\n"); - end - FInput1E = 64'hBFE1C32900000000; - FInput2E = 64'h201F04D 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,"5301295\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'h000003 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,"5302296\n"); - end - FInput1E = 64'hC52FFEFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 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,"5303297\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h8500100000000000; - 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,"5304298\n"); - end - FInput1E = 64'hC010CD4900000000; - FInput2E = 64'h2DD6BD4 00000000; - FInput3E = 64'hFEDFFBFF00000000; - 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,"5305299\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 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,"5306300\n"); - end - FInput1E = 64'hFFFD316400000000; - FInput2E = 64'h55DD8BC 00000000; - FInput3E = 64'h3CFFFFFF00000000; - ans = 64'h7FFDFE 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,"5307301\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 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,"5308302\n"); - end - FInput1E = 64'h3FC25B4500000000; - FInput2E = 64'h81BF2BA 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'hFFEFFE 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,"5309303\n"); - end - FInput1E = 64'hBFCF7FFF00000000; - FInput2E = 64'hFFFF7FF 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,"5310304\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02E2000000000000; - ans = 64'h000000 B00000000; - 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,"5311305\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h00000FE 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 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,"5312306\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0800010000000000; - 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,"5313307\n"); - end - FInput1E = 64'hC3D0400000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7F35676D00000000; - ans = 64'hCFEC7C 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,"5314308\n"); - end - FInput1E = 64'hC340000000000000; - 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,"5315309\n"); - end - FInput1E = 64'hBFBFFFFF00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'h00407F 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,"5316310\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE 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,"5317311\n"); - end - FInput1E = 64'hDC9103FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h19003FFF00000000; - 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,"5318312\n"); - end - FInput1E = 64'h37ECDE9800000000; - FInput2E = 64'hCE6315C 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,"5319313\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFF7F00000000; - ans = 64'hFFFFFE B00000000; - 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,"5320314\n"); - end - FInput1E = 64'h4010007F00000000; - FInput2E = 64'hFFEFFFF 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,"5321315\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hE4FFFFE000000000; - ans = 64'h00000F 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,"5322316\n"); - end - FInput1E = 64'h41EFFFE000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FF01FFF00000000; - ans = 64'hFFFFFF D00000000; - 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,"5323317\n"); - end - FInput1E = 64'hC340000000000000; - 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,"5324318\n"); - end - FInput1E = 64'hB73FFFFF00000000; - FInput2E = 64'hFFF807E 00000000; - FInput3E = 64'h4400000000000000; - ans = 64'h01FFFC 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,"5325319\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 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,"5326320\n"); - end - FInput1E = 64'h43FD72A800000000; - FInput2E = 64'h030320B 00000000; - FInput3E = 64'h3F532AF300000000; - ans = 64'h8738CD 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,"5327321\n"); - end - FInput1E = 64'hBFEFCB2100000000; - FInput2E = 64'h81426A0 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,"5328322\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02FFFFFF00000000; - ans = 64'hFF7FFC 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,"5329323\n"); - end - FInput1E = 64'h41E0000000000000; - FInput2E = 64'h01EFFFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 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,"5330324\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hC7FFFFFF00000000; - ans = 64'hF7FFFF 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,"5331325\n"); - end - FInput1E = 64'h419FF5FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEEFFFFF00000000; - ans = 64'h000000 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,"5332326\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 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,"5333327\n"); - end - FInput1E = 64'h47F000FF00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'h4179E05600000000; - ans = 64'hBF1A20 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,"5334328\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 700000000; - 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,"5335329\n"); - end - FInput1E = 64'h22A9E4C900000000; - FInput2E = 64'h41F526C 00000000; - FInput3E = 64'hFDC0000000000000; - ans = 64'h0001FF B00000000; - 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,"5336330\n"); - end - FInput1E = 64'h3810000000000000; - FInput2E = 64'h007FFBF 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,"5337331\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hFFFF1E B00000000; - 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,"5338332\n"); - end - FInput1E = 64'h3E22D5A500000000; - FInput2E = 64'h61042A6 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,"5339333\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h81FFFFFD00000000; - ans = 64'hFFFFF7 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,"5340334\n"); - end - FInput1E = 64'hC0B1CBF900000000; - FInput2E = 64'h23B7281 00000000; - FInput3E = 64'h04FFFFFF00000000; - ans = 64'hFFFDF7 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,"5341335\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 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,"5342336\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h000001F 00000000; - FInput3E = 64'hE801FFFF00000000; - ans = 64'hFFFFFC 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,"5343337\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 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,"5344338\n"); - end - FInput1E = 64'hBFEEBC0B00000000; - FInput2E = 64'hD5AEC9B 00000000; - FInput3E = 64'hF7FFFFFF00000000; - ans = 64'hFFFDFF 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,"5345339\n"); - end - FInput1E = 64'h0C70000700000000; - FInput2E = 64'hDFFFFFF 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,"5346340\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hB80000 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,"5347341\n"); - end - FInput1E = 64'h3FF2000000000000; - FInput2E = 64'h0FFFFFE 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,"5348342\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h2C9DC72D00000000; - ans = 64'h29C393 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,"5349343\n"); - end - FInput1E = 64'h8029CD0200000000; - FInput2E = 64'h833965C 00000000; - FInput3E = 64'h3DCE85EA00000000; - ans = 64'h079BB9 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,"5350344\n"); - end - FInput1E = 64'hC340000000000000; - 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,"5351345\n"); - end - FInput1E = 64'h3FCFF00000000000; - FInput2E = 64'h00FFFFE 00000000; - FInput3E = 64'hE100000800000000; - 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,"5352346\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 C00000000; - flags = 5'h67; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"67 "); - $fwrite(fp,"5353347\n"); - end - FInput1E = 64'h0180008000000000; - FInput2E = 64'h00003FE 00000000; - FInput3E = 64'hFCFEFFFF00000000; - ans = 64'hFFFFC0 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,"5354348\n"); - end - FInput1E = 64'h3FC0000700000000; - FInput2E = 64'hFFFFF80 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,"5355349\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h0C0000 B00000000; - 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,"5356350\n"); - end - FInput1E = 64'h3EB0000000000000; - FInput2E = 64'hDFFFFFF 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,"5357351\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hC0007F 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,"5358352\n"); - end - FInput1E = 64'h3CA0200400000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1D3FFFFE00000000; - 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,"5359353\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 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,"5360354\n"); - end - FInput1E = 64'hC3EF7FFB00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB0E0000000000000; - ans = 64'h000004 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,"5361355\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"5362356\n"); - end - FInput1E = 64'h413FFFBF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h9300000000000000; - ans = 64'h005FFE 500000000; - 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,"5363357\n"); - end - FInput1E = 64'h4340020000000000; - FInput2E = 64'h0400000 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,"5364358\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02FFFFFE00000000; - 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,"5365359\n"); - end - FInput1E = 64'h3D1DDE0300000000; - FInput2E = 64'h9D54D4C 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 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,"5366360\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0200000400000000; - ans = 64'h01FFFF 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,"5367361\n"); - end - FInput1E = 64'hFFE631AD00000000; - FInput2E = 64'h024B9BB 00000000; - FInput3E = 64'h09F7FFFF00000000; - ans = 64'hFFFFDF 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,"5368362\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 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,"5369363\n"); - end - FInput1E = 64'h43D0800000000000; - FInput2E = 64'h00003FE 00000000; - FInput3E = 64'hE002000000000000; - ans = 64'h100000 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,"5370364\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5371365\n"); - end - FInput1E = 64'hDE8FFFFF00000000; - FInput2E = 64'h1000000 00000000; - FInput3E = 64'h1AFFFFFF00000000; - ans = 64'hFFFFD0 B00000000; - flags = 5'h56; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"56 "); - $fwrite(fp,"5372366\n"); - end - FInput1E = 64'h48AFFFFF00000000; - FInput2E = 64'hFFFFBF6 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,"5373367\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h1FFFDFEF00000000; - ans = 64'hFFFFFE 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,"5374368\n"); - end - FInput1E = 64'hC1FFFFFF00000000; - FInput2E = 64'hFF801FF 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,"5375369\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFC0007FF00000000; - 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,"5376370\n"); - end - FInput1E = 64'hC035A04400000000; - FInput2E = 64'hE894E30 00000000; - FInput3E = 64'hFFEFFF7F00000000; - ans = 64'hFFFFFE C00000000; - 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,"5377371\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 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,"5378372\n"); - end - FInput1E = 64'hC07FFFFF00000000; - FInput2E = 64'h0001FFF 00000000; - FInput3E = 64'hFD3FFFFF00000000; - ans = 64'hFFFFEF 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,"5379373\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 300000000; - 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,"5380374\n"); - end - FInput1E = 64'hFFEFE00000000000; - FInput2E = 64'h03FFFFF 00000000; - FInput3E = 64'h1CFFFFE000000000; - ans = 64'h00003F 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,"5381375\n"); - end - FInput1E = 64'h3FB0000000000000; - FInput2E = 64'h1FFFFEE 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,"5382376\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02A3178500000000; - ans = 64'h0C4BEE 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,"5383377\n"); - end - FInput1E = 64'hB7F0000000000000; - FInput2E = 64'h00BFFFE 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,"5384378\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFF700000000; - 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,"5385379\n"); - end - FInput1E = 64'hBF3DA98100000000; - FInput2E = 64'hCA74782 00000000; - FInput3E = 64'h0F00020000000000; - ans = 64'h003FFF 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,"5386380\n"); - end - FInput1E = 64'hC340000000000000; - 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,"5387381\n"); - end - FInput1E = 64'hBFEFFFE000000000; - FInput2E = 64'h0100000 00000000; - FInput3E = 64'h1CFFFDFC00000000; - 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,"5388382\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFF00000000000000; - 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,"5389383\n"); - end - FInput1E = 64'hC3F3FFFF00000000; - FInput2E = 64'hFFFEFFE 00000000; - FInput3E = 64'h4BFFFDFF00000000; - ans = 64'hFFFFF6 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,"5390384\n"); - end - FInput1E = 64'hC0AF9FFF00000000; - FInput2E = 64'hFFFFFFF 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,"5391385\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h03FFFFFF00000000; - ans = 64'hFFFFFF 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,"5392386\n"); - end - FInput1E = 64'h409FFFFF00000000; - FInput2E = 64'h7FFFFFF 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,"5393387\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0C00000F00000000; - ans = 64'hFFFFC0 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,"5394388\n"); - end - FInput1E = 64'hC000FFEF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D00000000000000; - ans = 64'h0007FF 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,"5395389\n"); - end - FInput1E = 64'hC340000000000000; - 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,"5396390\n"); - end - FInput1E = 64'hC3CFFFC000000000; - FInput2E = 64'h0002000 00000000; - FInput3E = 64'h003FFFFF00000000; - ans = 64'h7FFFFF 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,"5397391\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 C00000000; - 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,"5398392\n"); - end - FInput1E = 64'hE770000000000000; - FInput2E = 64'h000000F 00000000; - FInput3E = 64'h80FFF00000000000; - ans = 64'h000006 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,"5399393\n"); - end - FInput1E = 64'hC0016C6200000000; - FInput2E = 64'hB48959C 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,"5400394\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF61EBD2500000000; - ans = 64'h062FB6 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,"5401395\n"); - end - FInput1E = 64'hC34FF00000000000; - FInput2E = 64'h003FFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - 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,"5402396\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h2C02797900000000; - ans = 64'hF2329E 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,"5403397\n"); - end - FInput1E = 64'hB800000000000000; - FInput2E = 64'h0000FFB 00000000; - FInput3E = 64'hFDFFF80100000000; - ans = 64'hFFFFFE 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,"5404398\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 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,"5405399\n"); - end - FInput1E = 64'hC1765FB200000000; - FInput2E = 64'h8B851CA 00000000; - FInput3E = 64'hFCF0080000000000; - 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,"5406400\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0000000000000000; - 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,"5407401\n"); - end - FInput1E = 64'h0020000000000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'h34FFFFE000000000; - 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,"5408402\n"); - end - FInput1E = 64'h47F0000000000000; - FInput2E = 64'h0000000 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,"5409403\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02521B2500000000; - ans = 64'h1AE5FE 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,"5410404\n"); - end - FInput1E = 64'hCAA0000000000000; - FInput2E = 64'h20003FF 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,"5411405\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCCD81F0100000000; - ans = 64'hC9258C 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,"5412406\n"); - end - FInput1E = 64'hBF00000F00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h04FF20B200000000; - ans = 64'h6B8D26 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,"5413407\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 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,"5414408\n"); - end - FInput1E = 64'h5BD0000000000000; - FInput2E = 64'h000207F 00000000; - FInput3E = 64'h3400000700000000; - ans = 64'hFDFFFF 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,"5415409\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000000 200000000; - flags = 5'h3A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3A "); - $fwrite(fp,"5416410\n"); - end - FInput1E = 64'h4010000000000000; - FInput2E = 64'h0010004 00000000; - FInput3E = 64'h3404000000000000; - ans = 64'h007FFE 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,"5417411\n"); - end - FInput1E = 64'h38DFE00000000000; - FInput2E = 64'h0FFFFFE 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,"5418412\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hC9F7536800000000; - ans = 64'h320691 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,"5419413\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h001FEFE 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,"5420414\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02FFFFFE00000000; - ans = 64'h0003FF 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,"5421415\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h2000002 00000000; - FInput3E = 64'h0EFFFFBF00000000; - 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,"5422416\n"); - end - FInput1E = 64'hC340000000000000; - 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,"5423417\n"); - end - FInput1E = 64'hBD20736800000000; - FInput2E = 64'h4E878FF 00000000; - FInput3E = 64'hFC09E90800000000; - ans = 64'h75DCE5 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,"5424418\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5425419\n"); - end - FInput1E = 64'h7FD0000000000000; - FInput2E = 64'h1FFFFFE 00000000; - FInput3E = 64'h1FFFF00000000000; - ans = 64'h00FFFF 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,"5426420\n"); - end - FInput1E = 64'h000FEFFF00000000; - FInput2E = 64'hFFFFE00 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,"5427421\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF3A5C7B700000000; - ans = 64'h5C2745 C00000000; - 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,"5428422\n"); - end - FInput1E = 64'hC03FFFF000000000; - FInput2E = 64'h1000000 00000000; - FInput3E = 64'h0100000000000000; - 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,"5429423\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hF00003 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,"5430424\n"); - end - FInput1E = 64'h002FFFFF00000000; - FInput2E = 64'h6FFFFFF 00000000; - FInput3E = 64'h1BBFFFFF00000000; - ans = 64'hFFFDFE 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,"5431425\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 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,"5432426\n"); - end - FInput1E = 64'h053B461F00000000; - FInput2E = 64'hBAD1965 00000000; - FInput3E = 64'h9D40000300000000; - 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,"5433427\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h34FFFFFF00000000; - 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,"5434428\n"); - end - FInput1E = 64'h3FCFF7FD00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1700000000000000; - ans = 64'h0100FF 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,"5435429\n"); - end - FInput1E = 64'hC00FFDFF00000000; - FInput2E = 64'hFF00000 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,"5436430\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFE41774E00000000; - ans = 64'hE28BFA 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,"5437431\n"); - end - FInput1E = 64'hC1D0001F00000000; - FInput2E = 64'hFFFFEFF 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,"5438432\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h00DFFE0000000000; - 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,"5439433\n"); - end - FInput1E = 64'h43EEFFFF00000000; - FInput2E = 64'hFFFE000 00000000; - FInput3E = 64'h01674BBC00000000; - ans = 64'h02F51F B00000000; - 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,"5440434\n"); - end - FInput1E = 64'hC340000000000000; - FInput2E = 64'h0000001 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,"5441435\n"); - end - FInput1E = 64'h3FE0020100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFC1FF 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,"5442436\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5443437\n"); - end - FInput1E = 64'h41F8096B00000000; - FInput2E = 64'hA05D502 00000000; - FInput3E = 64'h7F00000100000000; - ans = 64'h000001 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,"5444438\n"); - end - FInput1E = 64'h556FFFFF00000000; - FInput2E = 64'hFFF7FFE 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,"5445439\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E3FFFFF00000000; - ans = 64'hFFE000 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,"5446440\n"); - end - FInput1E = 64'h40203FFF00000000; - 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,"5447441\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h9540000000000000; - ans = 64'h00000E 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,"5448442\n"); - end - FInput1E = 64'hBFBAC18B00000000; - FInput2E = 64'hFA1F2A9 00000000; - FInput3E = 64'h6235B1D600000000; - ans = 64'h8EF776 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,"5449443\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5450444\n"); - end - FInput1E = 64'h271FFFFF00000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h4380000100000000; - 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,"5451445\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h000001 D00000000; - 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,"5452446\n"); - end - FInput1E = 64'hB7F0003F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1EC54C9B00000000; - ans = 64'h48EA25 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,"5453447\n"); - end - FInput1E = 64'h41DF80FF00000000; - FInput2E = 64'hFFFFFFF 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,"5454448\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h37022E0000000000; - ans = 64'h1D2104 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,"5455449\n"); - end - FInput1E = 64'hBF2FFFFF00000000; - FInput2E = 64'hF87FFFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 400000000; - 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,"5456450\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h03FFFFFE00000000; - 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,"5457451\n"); - end - FInput1E = 64'hFFE0000800000000; - FInput2E = 64'h0000002 00000000; - FInput3E = 64'hDB021FFF00000000; - 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,"5458452\n"); - end - FInput1E = 64'hC34FFFFF00000000; - 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,"5459453\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7F0E5EC700000000; - ans = 64'hAEF363 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,"5460454\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - 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,"5461455\n"); - end - FInput1E = 64'h0670000000000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h8000000000000000; - ans = 64'hFFFFDF 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,"5462456\n"); - end - FInput1E = 64'hBFF115E000000000; - FInput2E = 64'h501644D 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,"5463457\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE525F7900000000; - ans = 64'h266E1B 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,"5464458\n"); - end - FInput1E = 64'h43FE2E4A00000000; - FInput2E = 64'h459A84E 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,"5465459\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'hFFF800 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,"5466460\n"); - end - FInput1E = 64'hFFEFFCFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8107FFFF00000000; - ans = 64'hFFFFFC 500000000; - 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,"5467461\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5468462\n"); - end - FInput1E = 64'h43C4400000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3300000000000000; - 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,"5469463\n"); - end - FInput1E = 64'hC34FFFFF00000000; - 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,"5470464\n"); - end - FInput1E = 64'hBE327BE500000000; - FInput2E = 64'h2505E5A 00000000; - FInput3E = 64'h0600800100000000; - ans = 64'h000000 D00000000; - 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,"5471465\n"); - end - FInput1E = 64'h7A907FFF00000000; - FInput2E = 64'hFFFFFFB 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,"5472466\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF6FFFFFF00000000; - ans = 64'hFBFE00 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,"5473467\n"); - end - FInput1E = 64'hC1CF6FFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 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,"5474468\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0200000200000000; - 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,"5475469\n"); - end - FInput1E = 64'hC3CFFBFF00000000; - FInput2E = 64'hFFFFFBF 00000000; - FInput3E = 64'hFDB2E6E700000000; - ans = 64'hA5552E 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,"5476470\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5477471\n"); - end - FInput1E = 64'hC02003FD00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1E00000000000000; - ans = 64'h000010 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,"5478472\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"5479473\n"); - end - FInput1E = 64'hFFDF7FDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0DFFFFF000000000; - ans = 64'h000FFF 400000000; - flags = 5'h67; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"67 "); - $fwrite(fp,"5480474\n"); - end - FInput1E = 64'hB7F2FDB300000000; - FInput2E = 64'hF6D4D65 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,"5481475\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h34FF03FF00000000; - 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,"5482476\n"); - end - FInput1E = 64'hBFD0200000000000; - FInput2E = 64'h0001FFE 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000000 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,"5483477\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0291A13B00000000; - ans = 64'hE67925 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,"5484478\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hE000003 00000000; - FInput3E = 64'h01FF3FFF00000000; - 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,"5485479\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5486480\n"); - end - FInput1E = 64'h802C1E6D00000000; - FInput2E = 64'hBBEDA2F 00000000; - FInput3E = 64'h3DF56EE100000000; - ans = 64'h7B2129 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,"5487481\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 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,"5488482\n"); - end - FInput1E = 64'h0020000000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7FDFFFFF00000000; - ans = 64'hDFFFFF 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,"5489483\n"); - end - FInput1E = 64'hC1D0000000000000; - FInput2E = 64'h0201FFE 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,"5490484\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF4BA96E00000000; - ans = 64'h6C5C9A 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,"5491485\n"); - end - FInput1E = 64'h381FFF0000000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - 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,"5492486\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0300000F00000000; - ans = 64'hFFFE00 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,"5493487\n"); - end - FInput1E = 64'h4D700FFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h14FFF00000000000; - ans = 64'h000080 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,"5494488\n"); - end - FInput1E = 64'hC34FFFFF00000000; - 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,"5495489\n"); - end - FInput1E = 64'hBCA12A9600000000; - FInput2E = 64'hBF32DFF 00000000; - FInput3E = 64'h9400013F00000000; - 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,"5496490\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"5497491\n"); - end - FInput1E = 64'h41DFFFF000000000; - FInput2E = 64'h0020000 00000000; - FInput3E = 64'h0162944000000000; - ans = 64'h88ABFC 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,"5498492\n"); - end - FInput1E = 64'hB7F0000000000000; - FInput2E = 64'h3EFFFFF 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,"5499493\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF9D064A500000000; - ans = 64'hF5EAB4 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,"5500494\n"); - end - FInput1E = 64'h5D2FF7FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 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,"5501495\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00010000000000; - ans = 64'h100000 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,"5502496\n"); - end - FInput1E = 64'hBE2FFFF000000000; - FInput2E = 64'h000003F 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hDBFFFF 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,"5503497\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5504498\n"); - end - FInput1E = 64'h32C0000000000000; - FInput2E = 64'h0017FFF 00000000; - FInput3E = 64'hFEFFFF0000000000; - 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,"5505499\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 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,"5506500\n"); - end - FInput1E = 64'hBFE0001F00000000; - FInput2E = 64'hFFBFFFE 00000000; - FInput3E = 64'h3F16EDD400000000; - ans = 64'h200654 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,"5507501\n"); - end - FInput1E = 64'h43C43FFF00000000; - FInput2E = 64'hFFFFFFF 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,"5508502\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'hEFFFFF 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,"5509503\n"); - end - FInput1E = 64'h8020000000000000; - FInput2E = 64'h3FFFFFB 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,"5510504\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFB00000000; - 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,"5511505\n"); - end - FInput1E = 64'h41CFFFFF00000000; - FInput2E = 64'h0004000 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h000480 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,"5512506\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5513507\n"); - end - FInput1E = 64'h3FFDFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3F817F1900000000; - ans = 64'h5256E1 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,"5514508\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 400000000; - 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,"5515509\n"); - end - FInput1E = 64'hBFEFFFFF00000000; - FInput2E = 64'hFFFFFBA 00000000; - FInput3E = 64'h0200000000000000; - ans = 64'h00BFFE 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,"5516510\n"); - end - FInput1E = 64'h3CAFFF0000000000; - FInput2E = 64'h00001FF 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,"5517511\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1FD713D400000000; - ans = 64'h7358AB 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,"5518512\n"); - end - FInput1E = 64'hB4170A3300000000; - FInput2E = 64'hBFFDEA1 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,"5519513\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hA4003FFF00000000; - ans = 64'hFFBFFF 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,"5520514\n"); - end - FInput1E = 64'hC3EFFFFE00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h022C1B6200000000; - ans = 64'hE57DE7 700000000; - 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,"5521515\n"); - end - FInput1E = 64'hC34FFFFF00000000; - 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,"5522516\n"); - end - FInput1E = 64'h43F7B06300000000; - FInput2E = 64'h707C69A 00000000; - FInput3E = 64'h7FF7FFFF00000000; - ans = 64'hC00000 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,"5523517\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 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,"5524518\n"); - end - FInput1E = 64'h3CDFE00000000000; - FInput2E = 64'h003FFFE 00000000; - FInput3E = 64'hFF0B8A2A00000000; - ans = 64'h08F179 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,"5525519\n"); - end - FInput1E = 64'h43EFFFFF00000000; - FInput2E = 64'hBFFFFFF 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,"5526520\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - 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,"5527521\n"); - end - FInput1E = 64'hBF98CFEE00000000; - FInput2E = 64'h2FB2A4B 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,"5528522\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0F00000000000000; - ans = 64'h03FFE0 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,"5529523\n"); - end - FInput1E = 64'h43CFFFFF00000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'h6C20000000000000; - 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,"5530524\n"); - end - FInput1E = 64'hC34FFFFF00000000; - 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,"5531525\n"); - end - FInput1E = 64'hC02FFFDF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'h7EFF800000000000; - 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,"5532526\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 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,"5533527\n"); - end - FInput1E = 64'h412C000000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h03FFE0 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,"5534528\n"); - end - FInput1E = 64'h3CA3C96700000000; - FInput2E = 64'hB006DC6 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,"5535529\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3CFDFF8000000000; - 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,"5536530\n"); - end - FInput1E = 64'hC7F9B54E00000000; - FInput2E = 64'h8C14387 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,"5537531\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h4D00000000000000; - ans = 64'h007FBF 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,"5538532\n"); - end - FInput1E = 64'hC02BDF2900000000; - FInput2E = 64'hC43B3DB 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFF010 300000000; - 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,"5539533\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5540534\n"); - end - FInput1E = 64'h80174CD800000000; - FInput2E = 64'h7AB2AC0 00000000; - FInput3E = 64'hCAC902E000000000; - ans = 64'hC5111D 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,"5541535\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFE C00000000; - 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,"5542536\n"); - end - FInput1E = 64'hC000040000000000; - FInput2E = 64'h00003FE 00000000; - FInput3E = 64'h58FFDFE000000000; - 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,"5543537\n"); - end - FInput1E = 64'hC070800000000000; - FInput2E = 64'h0007FFF 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,"5544538\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0200010300000000; - ans = 64'hFFFFFF 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,"5545539\n"); - end - FInput1E = 64'h3FE0000000000000; - FInput2E = 64'hFFF8000 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,"5546540\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF6C06D4E00000000; - ans = 64'h885076 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,"5547541\n"); - end - FInput1E = 64'h8010587600000000; - FInput2E = 64'h573B25D 00000000; - FInput3E = 64'hA300001F00000000; - ans = 64'hFFBFFF 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,"5548542\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5549543\n"); - end - FInput1E = 64'hBFF0DD3C00000000; - FInput2E = 64'h8F59440 00000000; - FInput3E = 64'h81F801FF00000000; - 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,"5550544\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"5551545\n"); - end - FInput1E = 64'hB810000000000000; - FInput2E = 64'hFFFFFF7 00000000; - FInput3E = 64'h1DFFFFFF00000000; - ans = 64'h07FFFF 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,"5552546\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h7FFFFFF 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,"5553547\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hA600400000000000; - ans = 64'h3FFFFF 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,"5554548\n"); - end - FInput1E = 64'h3FE001FF00000000; - FInput2E = 64'hFFFFFBE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - 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,"5555549\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8032EFB500000000; - ans = 64'hE6BDF3 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,"5556550\n"); - end - FInput1E = 64'hC800000000000000; - FInput2E = 64'h07FFFBF 00000000; - FInput3E = 64'h0400001F00000000; - ans = 64'hFFDFFF 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,"5557551\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5558552\n"); - end - FInput1E = 64'hC36941DE00000000; - FInput2E = 64'h6046FBE 00000000; - FInput3E = 64'hCCFF7FFF00000000; - ans = 64'hFFFFF6 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,"5559553\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 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,"5560554\n"); - end - FInput1E = 64'hC02FFFFF00000000; - FInput2E = 64'hFFF8000 00000000; - FInput3E = 64'h3F00000000000000; - ans = 64'h000800 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,"5561555\n"); - end - FInput1E = 64'h43DFFFFA00000000; - FInput2E = 64'h0000000 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,"5562556\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h5220000000000000; - ans = 64'h001FFF 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,"5563557\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'hFFFFFEE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5564558\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFD00003F00000000; - ans = 64'hFFEFFE 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,"5565559\n"); - end - FInput1E = 64'h3FC0003F00000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'h24C364B100000000; - ans = 64'h77F5AC C00000000; - 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,"5566560\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5567561\n"); - end - FInput1E = 64'h7FD0000100000000; - FInput2E = 64'hFEFFFFF 00000000; - FInput3E = 64'h03FFFFFF00000000; - ans = 64'hFFFFF9 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,"5568562\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 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,"5569563\n"); - end - FInput1E = 64'hBE691E4C00000000; - FInput2E = 64'h816008E 00000000; - FInput3E = 64'h0270CC8800000000; - ans = 64'h80383C B00000000; - 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,"5570564\n"); - end - FInput1E = 64'hC3D0000800000000; - FInput2E = 64'h000007E 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,"5571565\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h03FFFFFF00000000; - ans = 64'hF7E000 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,"5572566\n"); - end - FInput1E = 64'hCCE0000000000000; - FInput2E = 64'h1FFFFFB 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF C00000000; - flags = 5'h3A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"3A "); - $fwrite(fp,"5573567\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'h0FFFFE 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,"5574568\n"); - end - FInput1E = 64'h3ECFFFF800000000; - FInput2E = 64'h0800000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000000 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,"5575569\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5576570\n"); - end - FInput1E = 64'hBFC6B1EF00000000; - FInput2E = 64'hB0BB5BF 00000000; - FInput3E = 64'hFF0006FF00000000; - 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,"5577571\n"); - end - FInput1E = 64'hC34FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 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,"5578572\n"); - end - FInput1E = 64'h43EEFFFF00000000; - FInput2E = 64'hFFFBFFF 00000000; - FInput3E = 64'h49E8000000000000; - 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,"5579573\n"); - end - FInput1E = 64'hBFEB0DFA00000000; - FInput2E = 64'h299634E 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,"5580574\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD00002000000000; - ans = 64'hFFFFFF 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,"5581575\n"); - end - FInput1E = 64'hC1D0100000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 A00000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"5582576\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h57FFFFFF00000000; - ans = 64'hFFFFBE 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,"5583577\n"); - end - FInput1E = 64'h3B60000000000000; - FInput2E = 64'h03FFFC0 00000000; - FInput3E = 64'h020000FF00000000; - 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,"5584578\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 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,"5585579\n"); - end - FInput1E = 64'hFFF1FEFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hDCAD42F300000000; - ans = 64'hCBA631 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,"5586580\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 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,"5587581\n"); - end - FInput1E = 64'h04AFF80000000000; - FInput2E = 64'h00FFFFF 00000000; - FInput3E = 64'h00FFFFDF00000000; - ans = 64'hFFFFEF 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,"5588582\n"); - end - FInput1E = 64'h41FFFE0000000000; - FInput2E = 64'h0080000 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,"5589583\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1EFFFFFF00000000; - ans = 64'hFFFFFE 200000000; - 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,"5590584\n"); - end - FInput1E = 64'h48069C5600000000; - FInput2E = 64'hF01409E 00000000; - FInput3E = 64'hFD00000000000000; - 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,"5591585\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDDD8CF300000000; - ans = 64'hF071DF 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,"5592586\n"); - end - FInput1E = 64'h459A1EED00000000; - FInput2E = 64'h6EC5FB6 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'hFFFFE0 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,"5593587\n"); - end - FInput1E = 64'hFFE0000000000000; - 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,"5594588\n"); - end - FInput1E = 64'h000FFFFF00000000; - FInput2E = 64'h0003FFE 00000000; - FInput3E = 64'h4240000F00000000; - 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,"5595589\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 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,"5596590\n"); - end - FInput1E = 64'h37F0000000000000; - FInput2E = 64'h000007E 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hC7FFFF 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,"5597591\n"); - end - FInput1E = 64'hBE2FFFFF00000000; - FInput2E = 64'hFFCFFFE 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,"5598592\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0B00000000000000; - ans = 64'h0008FF 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,"5599593\n"); - end - FInput1E = 64'hC7E0001000000000; - FInput2E = 64'h0000004 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 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,"5600594\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h5C001FFE00000000; - 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,"5601595\n"); - end - FInput1E = 64'h41DFFFFC00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFFFF000000000; - ans = 64'h003FFE 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,"5602596\n"); - end - FInput1E = 64'hFFE0000000000000; - 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,"5603597\n"); - end - FInput1E = 64'hBCA0000000000000; - FInput2E = 64'h00FFF00 00000000; - FInput3E = 64'h7EAEEC6100000000; - ans = 64'hA9C5E2 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,"5604598\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 000000000; - 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,"5605599\n"); - end - FInput1E = 64'hC0073D8D00000000; - FInput2E = 64'hC9C7CBB 00000000; - FInput3E = 64'hC3FFFFFF00000000; - 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,"5606600\n"); - end - FInput1E = 64'h1097FFFF00000000; - FInput2E = 64'h0000000 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,"5607601\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h5E00007F00000000; - ans = 64'hF7FFFF 900000000; - 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,"5608602\n"); - end - FInput1E = 64'h41CFF00000000000; - FInput2E = 64'h0001FFE 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - 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,"5609603\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1E6D2BD800000000; - ans = 64'h3FA49F 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,"5610604\n"); - end - FInput1E = 64'hBFDBFFFF00000000; - FInput2E = 64'hFFFFE00 00000000; - FInput3E = 64'hFF581B1D00000000; - ans = 64'h67D77E 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,"5611605\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 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,"5612606\n"); - end - FInput1E = 64'h41D0000400000000; - FInput2E = 64'h07FFFFF 00000000; - FInput3E = 64'h0600000400000000; - ans = 64'h01FFFF 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,"5613607\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5614608\n"); - end - FInput1E = 64'hBFEFCBF700000000; - FInput2E = 64'h36D2965 00000000; - FInput3E = 64'hB1FFFFEF00000000; - ans = 64'hFE0000 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,"5615609\n"); - end - FInput1E = 64'hCAD0800000000000; - FInput2E = 64'h0000400 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,"5616610\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h804ECDDD00000000; - ans = 64'hDEE74F 900000000; - flags = 5'h00; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"00 "); - $fwrite(fp,"5617611\n"); - end - FInput1E = 64'hBFCF27C100000000; - FInput2E = 64'h8FB06D7 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"5618612\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7E04000000000000; - ans = 64'h000100 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,"5619613\n"); - end - FInput1E = 64'h3800000000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'h5DFFFF7F00000000; - ans = 64'hFFFFFE 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,"5620614\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 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,"5621615\n"); - end - FInput1E = 64'hB7EFFFFF00000000; - FInput2E = 64'hFBFFDFF 00000000; - FInput3E = 64'h3DFFFEFF00000000; - ans = 64'hFFDFFF 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,"5622616\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 300000000; - 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,"5623617\n"); - end - FInput1E = 64'h47EFFFDF00000000; - FInput2E = 64'hFFFEFFF 00000000; - FInput3E = 64'hCA00200000000000; - ans = 64'h7FFFFF 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,"5624618\n"); - end - FInput1E = 64'hBFFFFEFF00000000; - FInput2E = 64'hFDFFFFF 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,"5625619\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1D00000000000000; - ans = 64'h001FFF 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,"5626620\n"); - end - FInput1E = 64'hCC80001000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - 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,"5627621\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h9597C76F00000000; - ans = 64'hEE87C2 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,"5628622\n"); - end - FInput1E = 64'hBFFC515600000000; - FInput2E = 64'hFC8FDE7 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hE80000 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,"5629623\n"); - end - FInput1E = 64'hFFE0000000000000; - 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,"5630624\n"); - end - FInput1E = 64'h4B20000000000000; - FInput2E = 64'h0003FBE 00000000; - FInput3E = 64'hFF00000400000000; - 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,"5631625\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 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,"5632626\n"); - end - FInput1E = 64'hFCD0007B00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - 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,"5633627\n"); - end - FInput1E = 64'h0020000000000000; - FInput2E = 64'h0000000 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,"5634628\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02C0000000000000; - ans = 64'h3FFFFF 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,"5635629\n"); - end - FInput1E = 64'hFFDFFF9F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 D00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"5636630\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFC5E27900000000; - ans = 64'h52AF09 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,"5637631\n"); - end - FInput1E = 64'hC02FFFFC00000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h021FFF 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,"5638632\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 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,"5639633\n"); - end - FInput1E = 64'hBE17800000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1F00000000000000; - ans = 64'h007FBF 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,"5640634\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3400000000000000; - 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,"5641635\n"); - end - FInput1E = 64'h29D6A54B00000000; - FInput2E = 64'h442DB61 00000000; - FInput3E = 64'h3300002000000000; - ans = 64'h000003 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,"5642636\n"); - end - FInput1E = 64'h3FF0000000000000; - FInput2E = 64'h2002000 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,"5643637\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFF7F00000000; - ans = 64'hFFFFDF 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,"5644638\n"); - end - FInput1E = 64'hBFCE77AA00000000; - FInput2E = 64'h423B8DB 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 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,"5645639\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h7E003BFF00000000; - 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,"5646640\n"); - end - FInput1E = 64'hBFDFFBFF00000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'h3C5B1C8B00000000; - ans = 64'h68D7AB 900000000; - 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,"5647641\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 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,"5648642\n"); - end - FInput1E = 64'hC070040000000000; - FInput2E = 64'h00001FF 00000000; - FInput3E = 64'h00C0000100000000; - 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,"5649643\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 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,"5650644\n"); - end - FInput1E = 64'h84E0400100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hBEFFFF 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,"5651645\n"); - end - FInput1E = 64'hFFD0000000000000; - FInput2E = 64'h03FBFFF 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,"5652646\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h5D16A57E00000000; - ans = 64'hC915F4 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,"5653647\n"); - end - FInput1E = 64'hBC73379100000000; - FInput2E = 64'h661564D 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,"5654648\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0200FFFF00000000; - ans = 64'hFFFF7E 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,"5655649\n"); - end - FInput1E = 64'hBFDBFFFF00000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'h7E4DD91200000000; - ans = 64'h8938F7 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,"5656650\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 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,"5657651\n"); - end - FInput1E = 64'h41E0547700000000; - FInput2E = 64'hB0C1D32 00000000; - FInput3E = 64'hD8007EFF00000000; - 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,"5658652\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 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,"5659653\n"); - end - FInput1E = 64'hBCA007FF00000000; - FInput2E = 64'hFFDFFFE 00000000; - FInput3E = 64'h5D00018000000000; - 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,"5660654\n"); - end - FInput1E = 64'h8580000000000000; - FInput2E = 64'h01FFF7E 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,"5661655\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hC7FFFFFF00000000; - ans = 64'hF87FFF 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,"5662656\n"); - end - FInput1E = 64'h1C5C008000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDFFFFFF00000000; - 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,"5663657\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02FFFFFD00000000; - 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,"5664658\n"); - end - FInput1E = 64'hBF90000800000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h4F8112CB00000000; - ans = 64'h53C6A7 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,"5665659\n"); - end - FInput1E = 64'hFFE0000000000000; - 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,"5666660\n"); - end - FInput1E = 64'hBFEA140D00000000; - FInput2E = 64'hAEEB598 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hF00007 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,"5667661\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5668662\n"); - end - FInput1E = 64'hBFDFFDFE00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02FFFFF800000000; - ans = 64'h008000 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,"5669663\n"); - end - FInput1E = 64'hC233FFFF00000000; - FInput2E = 64'hDFFFFFF 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,"5670664\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h043FC7D600000000; - ans = 64'h809BB1 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,"5671665\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'h1000003 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,"5672666\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCAFFE00000000000; - ans = 64'h0FFFFF 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,"5673667\n"); - end - FInput1E = 64'hB693169400000000; - FInput2E = 64'h613EF31 00000000; - FInput3E = 64'h41FFFFFF00000000; - ans = 64'hFFEBFF 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,"5674668\n"); - end - FInput1E = 64'hFFE0000000000000; - 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,"5675669\n"); - end - FInput1E = 64'h9B4FFFFF00000000; - FInput2E = 64'hFFFFBFF 00000000; - FInput3E = 64'h0040000000000000; - ans = 64'h00FFFF 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,"5676670\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 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,"5677671\n"); - end - FInput1E = 64'hBF866B8D00000000; - FInput2E = 64'h58B36B3 00000000; - FInput3E = 64'hFFF5682B00000000; - ans = 64'hA914EB 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,"5678672\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h03FDFFF 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,"5679673\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h07FDFE 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,"5680674\n"); - end - FInput1E = 64'h7FDFFBFF00000000; - FInput2E = 64'hFFF0000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 500000000; - 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,"5681675\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h03B20D5200000000; - ans = 64'h6DF360 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,"5682676\n"); - end - FInput1E = 64'hC7F07FFF00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hFC55AD0100000000; - ans = 64'hBCB7D9 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,"5683677\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 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,"5684678\n"); - end - FInput1E = 64'hBCA0407F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'h7DFFFF 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,"5685679\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 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,"5686680\n"); - end - FInput1E = 64'hC800000700000000; - FInput2E = 64'hFFDFFFF 00000000; - FInput3E = 64'hECF22F0500000000; - ans = 64'hA31DB2 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,"5687681\n"); - end - FInput1E = 64'hBFF0000000000000; - FInput2E = 64'h003FFFF 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,"5688682\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h000F2F5200000000; - ans = 64'h0EF1A6 300000000; - 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,"5689683\n"); - end - FInput1E = 64'h41F0000000000000; - FInput2E = 64'h0000FFB 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,"5690684\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3240000000000000; - ans = 64'h400000 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,"5691685\n"); - end - FInput1E = 64'hBFFDFFFF00000000; - FInput2E = 64'hFFFFC00 00000000; - FInput3E = 64'hFB7FF7FF00000000; - ans = 64'hFFFFFF 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,"5692686\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 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,"5693687\n"); - end - FInput1E = 64'hBFD99CCA00000000; - FInput2E = 64'h13FFAE7 00000000; - FInput3E = 64'hF1FFFFF600000000; - 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,"5694688\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 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,"5695689\n"); - end - FInput1E = 64'h450FFFFF00000000; - FInput2E = 64'hFFFFBFE 00000000; - FInput3E = 64'h323FFFFF00000000; - ans = 64'hFFFF7F 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,"5696690\n"); - end - FInput1E = 64'hC417FFF700000000; - FInput2E = 64'hFFFFFFF 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,"5697691\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hB9FFFFFF00000000; - ans = 64'h0FFFFF 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,"5698692\n"); - end - FInput1E = 64'hC3C0000000000000; - FInput2E = 64'h00201FF 00000000; - FInput3E = 64'hFE00000000000000; - 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,"5699693\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7FB54DF700000000; - ans = 64'h305A6B 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,"5700694\n"); - end - FInput1E = 64'h3DC0000000000000; - FInput2E = 64'hFFEFFFF 00000000; - FInput3E = 64'hFE04000000000000; - ans = 64'h0007FF 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,"5701695\n"); - end - FInput1E = 64'hFFE0000000000000; - 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,"5702696\n"); - end - FInput1E = 64'h56B0000000000000; - FInput2E = 64'hEFFFFFE 00000000; - FInput3E = 64'hFE71A31100000000; - ans = 64'h5E033B 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,"5703697\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 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,"5704698\n"); - end - FInput1E = 64'h7FE841AE00000000; - FInput2E = 64'hC8B5E0F 00000000; - FInput3E = 64'h7FFDFFFF00000000; - ans = 64'hFFFFFF 300000000; - 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,"5705699\n"); - end - FInput1E = 64'hC183AC4B00000000; - FInput2E = 64'h95EA96F 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,"5706700\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h07B2A20700000000; - ans = 64'h6CA02F 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,"5707701\n"); - end - FInput1E = 64'hBFCDB74A00000000; - FInput2E = 64'h952863B 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 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,"5708702\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hE1FFFFF100000000; - 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,"5709703\n"); - end - FInput1E = 64'h39C0000000000000; - FInput2E = 64'h03FFFBF 00000000; - FInput3E = 64'h86F77A0900000000; - ans = 64'h96943C 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,"5710704\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 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,"5711705\n"); - end - FInput1E = 64'h4800010000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1C00000000000000; - ans = 64'h00017F 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,"5712706\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h34FFFFFF00000000; - 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,"5713707\n"); - end - FInput1E = 64'hC0307FFF00000000; - FInput2E = 64'hFFDFFFF 00000000; - FInput3E = 64'hF9F0000000000000; - ans = 64'h00FFFE 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,"5714708\n"); - end - FInput1E = 64'h41EFDFFF00000000; - FInput2E = 64'hFFBFFFE 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,"5715709\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h02DBBB7100000000; - ans = 64'h6456B2 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,"5716710\n"); - end - FInput1E = 64'h40AD8B6700000000; - FInput2E = 64'h7B86EE2 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 400000000; - 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,"5717711\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3E00000000000000; - ans = 64'h00FFFF 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,"5718712\n"); - end - FInput1E = 64'hC3D4000000000000; - FInput2E = 64'h1FFFFFF 00000000; - FInput3E = 64'hFF00001F00000000; - ans = 64'hFFFFF7 300000000; - 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,"5719713\n"); - end - FInput1E = 64'hFFE0000000000000; - FInput2E = 64'h0000001 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,"5720714\n"); - end - FInput1E = 64'h3FEFFFF800000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'hFF8E766100000000; - ans = 64'hB27E20 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,"5721715\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"5722716\n"); - end - FInput1E = 64'h801FFF0000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h42D98A6400000000; - ans = 64'h52E22F 800000000; - 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,"5723717\n"); - end - FInput1E = 64'h3AB0000100000000; - FInput2E = 64'hFFFFBFF 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,"5724718\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h6B0003FF00000000; - ans = 64'hDFFFFF 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,"5725719\n"); - end - FInput1E = 64'h3FFDA55F00000000; - FInput2E = 64'h6C4FCF9 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 400000000; - 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,"5726720\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hD100000000000000; - 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,"5727721\n"); - end - FInput1E = 64'hFFEDFFFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'hF500000000000000; - ans = 64'h1FFFFF 400000000; - 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,"5728722\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5729723\n"); - end - FInput1E = 64'hBFC0020000000000; - FInput2E = 64'h0000008 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'hF7FFFF 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,"5730724\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - 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,"5731725\n"); - end - FInput1E = 64'h41CFFFB700000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hB180000F00000000; - ans = 64'hFFFFFE 200000000; - 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,"5732726\n"); - end - FInput1E = 64'h64AFFFFF00000000; - FInput2E = 64'hFFFFFDB 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,"5733727\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3FFFFFFF00000000; - ans = 64'h000400 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,"5734728\n"); - end - FInput1E = 64'hB80FFF7F00000000; - FInput2E = 64'hFFFFEFF 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 800000000; - 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,"5735729\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3C0003FF00000000; - 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,"5736730\n"); - end - FInput1E = 64'hC7F590E200000000; - FInput2E = 64'h0A54BC7 00000000; - FInput3E = 64'hCA0800FF00000000; - ans = 64'hFFFFFE 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,"5737731\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - 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,"5738732\n"); - end - FInput1E = 64'h9A54000000000000; - FInput2E = 64'h000007F 00000000; - FInput3E = 64'h0100200000000000; - ans = 64'h0001FF 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,"5739733\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5740734\n"); - end - FInput1E = 64'hEB40000000000000; - FInput2E = 64'h040000F 00000000; - FInput3E = 64'h06EA3E4700000000; - ans = 64'h0678EA 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,"5741735\n"); - end - FInput1E = 64'hC11FFFFF00000000; - FInput2E = 64'hF7FFEFF 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,"5742736\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h01F800 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,"5743737\n"); - end - FInput1E = 64'hB990000000000000; - FInput2E = 64'h0020400 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"5744738\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'hFFFEFE 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,"5745739\n"); - end - FInput1E = 64'h4032000000000000; - FInput2E = 64'h0020000 00000000; - FInput3E = 64'h01C0000000000000; - ans = 64'h002000 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,"5746740\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5747741\n"); - end - FInput1E = 64'h1C400FFF00000000; - FInput2E = 64'hFFFEFFE 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"5748742\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5749743\n"); - end - FInput1E = 64'h37F0000000000000; - FInput2E = 64'h00FF7FF 00000000; - FInput3E = 64'h7700000000000000; - ans = 64'h0001DF 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,"5750744\n"); - end - FInput1E = 64'h3FCFF80000000000; - FInput2E = 64'h00003FE 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,"5751745\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80FFFDFF00000000; - ans = 64'hFFFEFF 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,"5752746\n"); - end - FInput1E = 64'h3FC535B700000000; - FInput2E = 64'hAFF154E 00000000; - FInput3E = 64'hFF00000000000000; - 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,"5753747\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0A00000700000000; - 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,"5754748\n"); - end - FInput1E = 64'hDECFFFFF00000000; - FInput2E = 64'hFFE7FFF 00000000; - FInput3E = 64'hFD9819C900000000; - ans = 64'h25572A 700000000; - 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,"5755749\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5756750\n"); - end - FInput1E = 64'h3FBFBFFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'hFD00200400000000; - 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,"5757751\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 300000000; - 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,"5758752\n"); - end - FInput1E = 64'h3FD0000000000000; - FInput2E = 64'h0017FFF 00000000; - FInput3E = 64'h1C01FFFF00000000; - ans = 64'hFFEFFF 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,"5759753\n"); - end - FInput1E = 64'hC34F000000000000; - FInput2E = 64'h00001FF 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,"5760754\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFBFFF00000000000; - ans = 64'h01FFFE 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,"5761755\n"); - end - FInput1E = 64'h802D042100000000; - FInput2E = 64'h5086B6E 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,"5762756\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1E00000100000000; - ans = 64'hFFFDFE 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,"5763757\n"); - end - FInput1E = 64'hFFD4420800000000; - FInput2E = 64'hEEA7D5B 00000000; - FInput3E = 64'hFDFFFFCF00000000; - 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,"5764758\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - 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,"5765759\n"); - end - FInput1E = 64'h9F60000700000000; - FInput2E = 64'hFFFFFFD 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFBF8 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,"5766760\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - 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,"5767761\n"); - end - FInput1E = 64'h35A001EF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0204000000000000; - ans = 64'h00000F B00000000; - 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,"5768762\n"); - end - FInput1E = 64'hAD431C8800000000; - FInput2E = 64'h34A6207 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,"5769763\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hED3FFFFF00000000; - ans = 64'hFFF000 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,"5770764\n"); - end - FInput1E = 64'hBCAFFFFF00000000; - FInput2E = 64'h0000004 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 000000000; - 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,"5771765\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E0007FF00000000; - ans = 64'h7FFFFE 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,"5772766\n"); - end - FInput1E = 64'hC6DFFFFF00000000; - FInput2E = 64'h00FFFFF 00000000; - FInput3E = 64'h3D50000000000000; - 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,"5773767\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5774768\n"); - end - FInput1E = 64'h4DBF7FFF00000000; - FInput2E = 64'hFFE0000 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'h00027E 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,"5775769\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - 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,"5776770\n"); - end - FInput1E = 64'h41CDFF7F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h649AE1D400000000; - ans = 64'hCBD6E1 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,"5777771\n"); - end - FInput1E = 64'h3F8FFFC000000000; - FInput2E = 64'hFFFFFFF 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,"5778772\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3CFFFF6F00000000; - 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,"5779773\n"); - end - FInput1E = 64'h403B876400000000; - FInput2E = 64'hABD821D 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFE 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,"5780774\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFCBBE50E00000000; - ans = 64'h8B491C 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,"5781775\n"); - end - FInput1E = 64'h3E2F7FFF00000000; - FInput2E = 64'hFFDFFFF 00000000; - FInput3E = 64'hF2109F9C00000000; - ans = 64'h66A47F C00000000; - 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,"5782776\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5783777\n"); - end - FInput1E = 64'hB7FF7EFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hDD00008000000000; - ans = 64'h020000 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,"5784778\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 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,"5785779\n"); - end - FInput1E = 64'h3A3FFFFF00000000; - FInput2E = 64'h7FFFFFC 00000000; - FInput3E = 64'h7F00020700000000; - 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,"5786780\n"); - end - FInput1E = 64'h3FAFFBFF00000000; - FInput2E = 64'hFFFFBFF 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,"5787781\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h818D7CFF00000000; - ans = 64'h79E6C9 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,"5788782\n"); - end - FInput1E = 64'hBFE0000000000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5789783\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8007FBFF00000000; - 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,"5790784\n"); - end - FInput1E = 64'h40DCB65000000000; - FInput2E = 64'h646528A 00000000; - FInput3E = 64'hFE93354900000000; - ans = 64'h7F6FB5 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,"5791785\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5792786\n"); - end - FInput1E = 64'h6E2FEFFF00000000; - FInput2E = 64'hFE00000 00000000; - FInput3E = 64'hEA00010000000000; - 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,"5793787\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 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,"5794788\n"); - end - FInput1E = 64'hA88FFFFF00000000; - FInput2E = 64'hFFDFFFB 00000000; - FInput3E = 64'h00AB6FB400000000; - ans = 64'h28B477 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,"5795789\n"); - end - FInput1E = 64'hB8C0000000000000; - FInput2E = 64'h003FFFB 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,"5796790\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h34BA53EA00000000; - ans = 64'h8CBB19 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,"5797791\n"); - end - FInput1E = 64'h3F3FFFFF00000000; - FInput2E = 64'hFEFFFFE 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 500000000; - 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,"5798792\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0B0000FF00000000; - ans = 64'hFFFFC0 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,"5799793\n"); - end - FInput1E = 64'hBFCFFFFF00000000; - FInput2E = 64'hFF000FE 00000000; - FInput3E = 64'h3CFF800000000000; - 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,"5800794\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5801795\n"); - end - FInput1E = 64'hC02E000100000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFDFF00000000; - ans = 64'hFFFFFC 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,"5802796\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - 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,"5803797\n"); - end - FInput1E = 64'h43DFFF0000000000; - FInput2E = 64'h0040000 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hFBFFC0 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,"5804798\n"); - end - FInput1E = 64'hC34B4CBD00000000; - FInput2E = 64'h51C5070 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,"5805799\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFE0003F00000000; - 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,"5806800\n"); - end - FInput1E = 64'h633FFFFF00000000; - FInput2E = 64'hFFFF7FC 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 500000000; - flags = 5'hEF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"EF "); - $fwrite(fp,"5807801\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3EA49F9E00000000; - ans = 64'hCF97B4 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,"5808802\n"); - end - FInput1E = 64'h381FBFFF00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'h34C0000000000000; - ans = 64'h03FFFF 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,"5809803\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - 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,"5810804\n"); - end - FInput1E = 64'hC000000700000000; - FInput2E = 64'hFFFDFFF 00000000; - FInput3E = 64'h243CD24400000000; - ans = 64'h9B713B 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,"5811805\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 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,"5812806\n"); - end - FInput1E = 64'hBE38000000000000; - FInput2E = 64'h000FFFF 00000000; - FInput3E = 64'h7FFFFFFF00000000; - ans = 64'hFFFDF0 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,"5813807\n"); - end - FInput1E = 64'h3FE0FFFF00000000; - FInput2E = 64'hC000000 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,"5814808\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h920DEAA400000000; - ans = 64'h02731E 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,"5815809\n"); - end - FInput1E = 64'h0010000000000000; - FInput2E = 64'h03FFFBF 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 400000000; - flags = 5'h32; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"32 "); - $fwrite(fp,"5816810\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hF4FFFFFF00000000; - 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,"5817811\n"); - end - FInput1E = 64'hFFFFFDFF00000000; - FInput2E = 64'hFFFC000 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'h007FFF 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,"5818812\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5819813\n"); - end - FInput1E = 64'hBFC0040000000000; - FInput2E = 64'h000003E 00000000; - FInput3E = 64'h7FF5488200000000; - ans = 64'hB41746 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,"5820814\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - 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,"5821815\n"); - end - FInput1E = 64'h43EFF7FF00000000; - FInput2E = 64'hFFFFFEF 00000000; - FInput3E = 64'h0004AA3E00000000; - ans = 64'h8463C9 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,"5822816\n"); - end - FInput1E = 64'hC0D17FFF00000000; - FInput2E = 64'hFFFFFFE 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,"5823817\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFA20000000000000; - ans = 64'h000000 800000000; - 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,"5824818\n"); - end - FInput1E = 64'hC3EFFFFE00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 100000000; - 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,"5825819\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1D00000000000000; - 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,"5826820\n"); - end - FInput1E = 64'h3FDFFFFE00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h05E7D79000000000; - ans = 64'h3E9FFF 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,"5827821\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5828822\n"); - end - FInput1E = 64'hC02003FF00000000; - FInput2E = 64'hFFBFFFE 00000000; - FInput3E = 64'h4F00000000000000; - ans = 64'hFF0000 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,"5829823\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - 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,"5830824\n"); - end - FInput1E = 64'h8020000000000000; - FInput2E = 64'h00000EE 00000000; - FInput3E = 64'hFDB5283300000000; - ans = 64'hB11F00 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,"5831825\n"); - end - FInput1E = 64'h4010003B00000000; - FInput2E = 64'hFFFFFFF 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,"5832826\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h03007FFF00000000; - ans = 64'h7FFFFF 200000000; - 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,"5833827\n"); - end - FInput1E = 64'h04B0000000000000; - FInput2E = 64'h0008080 00000000; - FInput3E = 64'hCAFFFFFF00000000; - 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,"5834828\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFABFFFFF00000000; - ans = 64'hFFFC00 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,"5835829\n"); - end - FInput1E = 64'h3E90000000000000; - FInput2E = 64'h000000D 00000000; - FInput3E = 64'hB2F5D91400000000; - ans = 64'hFF7B17 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,"5836830\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5837831\n"); - end - FInput1E = 64'hC3407B1900000000; - FInput2E = 64'hFF9E57D 00000000; - FInput3E = 64'h7AFFFFFF00000000; - ans = 64'hF807FE 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,"5838832\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - 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,"5839833\n"); - end - FInput1E = 64'hC000000000000000; - FInput2E = 64'h010007F 00000000; - FInput3E = 64'hFE31B82D00000000; - ans = 64'h2EC537 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,"5840834\n"); - end - FInput1E = 64'h3C0FFFFF00000000; - FInput2E = 64'h000003F 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,"5841835\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h8010000000000000; - ans = 64'h800000 300000000; - 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,"5842836\n"); - end - FInput1E = 64'hC3CFFFFF00000000; - FInput2E = 64'h01FFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5843837\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFC0870100000000; - ans = 64'h03E00F 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,"5844838\n"); - end - FInput1E = 64'h3CF0200000000000; - FInput2E = 64'h00003FE 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h000F00 C00000000; - 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,"5845839\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5846840\n"); - end - FInput1E = 64'h3FE07F7F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h017FEFFF00000000; - 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,"5847841\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 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,"5848842\n"); - end - FInput1E = 64'h43C0000000000000; - FInput2E = 64'h0100800 00000000; - FInput3E = 64'hFD07CFE200000000; - ans = 64'hAAA39A 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,"5849843\n"); - end - FInput1E = 64'h4029C22500000000; - FInput2E = 64'h558ABD5 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,"5850844\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0180000000000000; - ans = 64'h0000FF 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,"5851845\n"); - end - FInput1E = 64'hACBEBE6400000000; - FInput2E = 64'h9751D84 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hFFFFFF 200000000; - 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,"5852846\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h6AFFEFF000000000; - 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,"5853847\n"); - end - FInput1E = 64'h937FFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h42FFFE0000000000; - ans = 64'h020000 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,"5854848\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"5855849\n"); - end - FInput1E = 64'h401FFFFF00000000; - FInput2E = 64'hFBEFFFE 00000000; - FInput3E = 64'hFC00000000000000; - ans = 64'h0FFFFE 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,"5856850\n"); - end - FInput1E = 64'hFFEFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - 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,"5857851\n"); - end - FInput1E = 64'h434FFFFF00000000; - FInput2E = 64'h0000007 00000000; - FInput3E = 64'h7F00000000000000; - ans = 64'h003DFE 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,"5858852\n"); - end - FInput1E = 64'hC1C6DA5500000000; - FInput2E = 64'hB2A02DC 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,"5859853\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h34FFFFFF00000000; - ans = 64'hC07FFE 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,"5860854\n"); - end - FInput1E = 64'hC1FFFFFF00000000; - FInput2E = 64'h8010000 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,"5861855\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3C1FFFFF00000000; - ans = 64'hFFFBFF 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,"5862856\n"); - end - FInput1E = 64'h801E000F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFA001FFF00000000; - ans = 64'hFFFFF7 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,"5863857\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 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,"5864858\n"); - end - FInput1E = 64'h41C1FA2800000000; - FInput2E = 64'hE56CF27 00000000; - FInput3E = 64'h5DC0000000000000; - ans = 64'h000040 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,"5865859\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA00000000000000; - 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,"5866860\n"); - end - FInput1E = 64'h41BFFFFF00000000; - FInput2E = 64'hFE00007 00000000; - FInput3E = 64'h2E00000700000000; - 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,"5867861\n"); - end - FInput1E = 64'hB81FFFE000000000; - FInput2E = 64'h0000100 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,"5868862\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hE1003FFF00000000; - ans = 64'hFFFFFA B00000000; - 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,"5869863\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'h000041F 00000000; - FInput3E = 64'hFD00000000000000; - 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,"5870864\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h02FB800000000000; - 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,"5871865\n"); - end - FInput1E = 64'h3FF0B26300000000; - FInput2E = 64'hFD80200 00000000; - FInput3E = 64'h80FFFC0000000000; - ans = 64'h000007 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,"5872866\n"); - end - FInput1E = 64'hFFF0000000000000; - 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,"5873867\n"); - end - FInput1E = 64'h41FFFFDF00000000; - FInput2E = 64'hFF80000 00000000; - FInput3E = 64'h0E0EFEF900000000; - ans = 64'hAE791F 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,"5874868\n"); - end - FInput1E = 64'hFFF0000000000000; - 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,"5875869\n"); - end - FInput1E = 64'hFFF9792B00000000; - FInput2E = 64'hDD2F45B 00000000; - FInput3E = 64'hFD3FE6E600000000; - ans = 64'h452D82 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,"5876870\n"); - end - FInput1E = 64'hBEB0008000000000; - FInput2E = 64'h000003F 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,"5877871\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hF1FFFFFF00000000; - ans = 64'hEFFF7F 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,"5878872\n"); - end - FInput1E = 64'h3FF03FFF00000000; - FInput2E = 64'hFFFFBFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 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,"5879873\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFDEFFFFF00000000; - 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,"5880874\n"); - end - FInput1E = 64'h380ACC8600000000; - FInput2E = 64'hDC8D885 00000000; - FInput3E = 64'hFCFFFFFF00000000; - ans = 64'hFEFE00 B00000000; - 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,"5881875\n"); - end - FInput1E = 64'hFFF0000000000000; - 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,"5882876\n"); - end - FInput1E = 64'h37E003FF00000000; - FInput2E = 64'hFFFFEFE 00000000; - FInput3E = 64'h03FFFEDF00000000; - 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,"5883877\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 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,"5884878\n"); - end - FInput1E = 64'hBFC0BFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD04000000000000; - ans = 64'h020000 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,"5885879\n"); - end - FInput1E = 64'hFFDFFFFF00000000; - FInput2E = 64'h0007FFE 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,"5886880\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h1CE0000000000000; - 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,"5887881\n"); - end - FInput1E = 64'hC4A0000000000000; - FInput2E = 64'hFFEFFFF 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,"5888882\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3CE0000000000000; - ans = 64'h0FFFFF 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,"5889883\n"); - end - FInput1E = 64'h7FE2FF0E00000000; - FInput2E = 64'h3E066C6 00000000; - FInput3E = 64'hD300000000000000; - ans = 64'h202000 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,"5890884\n"); - end - FInput1E = 64'hFFF0000000000000; - 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,"5891885\n"); - end - FInput1E = 64'hBFF9496700000000; - FInput2E = 64'h22AD370 00000000; - FInput3E = 64'h000007FE00000000; - 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,"5892886\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 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,"5893887\n"); - end - FInput1E = 64'hC3FD714300000000; - FInput2E = 64'h5AAC8E9 00000000; - FInput3E = 64'h03FFFFFC00000000; - ans = 64'h000000 F00000000; - 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,"5894888\n"); - end - FInput1E = 64'h43CFFFF800000000; - FInput2E = 64'h0007FFF 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,"5895889\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hB6FFFFFF00000000; - ans = 64'hEFFFFF 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,"5896890\n"); - end - FInput1E = 64'h46A01FFF00000000; - FInput2E = 64'hFFFFC00 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFE 500000000; - 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,"5897891\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h01BFFFFF00000000; - ans = 64'hFFFFE0 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,"5898892\n"); - end - FInput1E = 64'h0010077F00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0300000000000000; - ans = 64'h03FDFF B00000000; - 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,"5899893\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 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,"5900894\n"); - end - FInput1E = 64'hC800000000000000; - FInput2E = 64'hFFF8000 00000000; - FInput3E = 64'h1FFFFC0000000000; - 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,"5901895\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hCA00000000000000; - 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,"5902896\n"); - end - FInput1E = 64'hB7E0000000000000; - FInput2E = 64'h0800001 00000000; - FInput3E = 64'h3FFFFFFF00000000; - 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,"5903897\n"); - end - FInput1E = 64'hF4503FFD00000000; - FInput2E = 64'hFFFFFFE 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,"5904898\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0000003F00000000; - ans = 64'h000000 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,"5905899\n"); - end - FInput1E = 64'h3EF0000000000000; - FInput2E = 64'h07EFFFE 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFF 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,"5906900\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h05FFFF7F00000000; - ans = 64'hFFFEFF 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,"5907901\n"); - end - FInput1E = 64'hBFB00FFF00000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hFA5F1B0900000000; - ans = 64'hD8D162 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,"5908902\n"); - end - FInput1E = 64'hFFF0000000000000; - 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,"5909903\n"); - end - FInput1E = 64'hFFDFFFFF00000000; - FInput2E = 64'h0000040 00000000; - FInput3E = 64'h8F00001B00000000; - 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,"5910904\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 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,"5911905\n"); - end - FInput1E = 64'hC37FFFFF00000000; - FInput2E = 64'hFFFFBF0 00000000; - FInput3E = 64'hFD18000000000000; - ans = 64'h000000 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,"5912906\n"); - end - FInput1E = 64'h43CFFFDF00000000; - FInput2E = 64'hFFFFF7E 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,"5913907\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3CD2EEF600000000; - ans = 64'h4C9414 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,"5914908\n"); - end - FInput1E = 64'h40987EE300000000; - FInput2E = 64'h17430E2 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 300000000; - 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,"5915909\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFAFFFFFF00000000; - ans = 64'hFDFFF7 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,"5916910\n"); - end - FInput1E = 64'hB240000000000000; - FInput2E = 64'h0808000 00000000; - FInput3E = 64'hFF1FFFFF00000000; - ans = 64'hFFFFDE 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,"5917911\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 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,"5918912\n"); - end - FInput1E = 64'hB813836C00000000; - FInput2E = 64'h23CCE80 00000000; - FInput3E = 64'h01E69D9D00000000; - ans = 64'hEF70EC 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,"5919913\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3400000000000000; - 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,"5920914\n"); - end - FInput1E = 64'h169001BF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h80CC0E0300000000; - ans = 64'hD45494 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,"5921915\n"); - end - FInput1E = 64'h801BC28F00000000; - FInput2E = 64'h9C97443 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,"5922916\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h00FFBFFF00000000; - 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,"5923917\n"); - end - FInput1E = 64'hB7F8002000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 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,"5924918\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFD3FFFEF00000000; - 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,"5925919\n"); - end - FInput1E = 64'hC3E003FF00000000; - FInput2E = 64'hF7FFFFF 00000000; - FInput3E = 64'hCA00000800000000; - ans = 64'h000000 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,"5926920\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 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,"5927921\n"); - end - FInput1E = 64'h42BBFFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h3F1FFFFF00000000; - ans = 64'hFF8000 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,"5928922\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE 100000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"5929923\n"); - end - FInput1E = 64'h9B6FFFC000000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00AA356600000000; - ans = 64'h2DB1D6 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,"5930924\n"); - end - FInput1E = 64'hC7F90C6D00000000; - FInput2E = 64'h1DA9200 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,"5931925\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0200400000000000; - ans = 64'h040000 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,"5932926\n"); - end - FInput1E = 64'h39BFF00000000000; - FInput2E = 64'h00000FE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 400000000; - 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,"5933927\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h8EFFFF8000000000; - ans = 64'h00000E 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,"5934928\n"); - end - FInput1E = 64'hF7FFFFFF00000000; - FInput2E = 64'hFFFFFE8 00000000; - FInput3E = 64'h3CFFFFFF00000000; - ans = 64'hFFF002 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,"5935929\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 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,"5936930\n"); - end - FInput1E = 64'h4000003F00000000; - FInput2E = 64'hDFFFFFE 00000000; - FInput3E = 64'hFFFFC00000000000; - ans = 64'h0007FE 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,"5937931\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFE E00000000; - 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,"5938932\n"); - end - FInput1E = 64'h4007A9F600000000; - FInput2E = 64'h5848F58 00000000; - FInput3E = 64'hFB00800000000000; - ans = 64'h0000FE 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,"5939933\n"); - end - FInput1E = 64'hC01FFFFC00000000; - FInput2E = 64'h1000000 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,"5940934\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h81FFEFFB00000000; - ans = 64'hFFFFFE 400000000; - 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,"5941935\n"); - end - FInput1E = 64'h3FEFFFE000000000; - FInput2E = 64'h3FFFFFE 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,"5942936\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hF922460A00000000; - ans = 64'h82AFE2 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,"5943937\n"); - end - FInput1E = 64'h0004195D00000000; - FInput2E = 64'h69CF7AF 00000000; - FInput3E = 64'hF1FFFFFE00000000; - 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,"5944938\n"); - end - FInput1E = 64'hFFF0000000000000; - 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,"5945939\n"); - end - FInput1E = 64'hC3E0000000000000; - FInput2E = 64'h020007F 00000000; - FInput3E = 64'h1D00080000000000; - ans = 64'h000100 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,"5946940\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF B00000000; - 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,"5947941\n"); - end - FInput1E = 64'hC010000000000000; - FInput2E = 64'h0020400 00000000; - FInput3E = 64'h0179FC8B00000000; - ans = 64'h26BB0F C00000000; - flags = 5'h6A; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"6A "); - $fwrite(fp,"5948942\n"); - end - FInput1E = 64'h41DFFFFF00000000; - FInput2E = 64'hFFBFFC0 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,"5949943\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h89CD81F000000000; - ans = 64'hCB1FAA C00000000; - 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,"5950944\n"); - end - FInput1E = 64'hC008B83700000000; - FInput2E = 64'hFE0F23C 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,"5951945\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h07FFEFFF00000000; - ans = 64'hFFFFF6 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,"5952946\n"); - end - FInput1E = 64'hBFD0000000000000; - FInput2E = 64'hFF80000 00000000; - FInput3E = 64'hEDFFFFFF00000000; - ans = 64'h800040 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,"5953947\n"); - end - FInput1E = 64'hFFF0000000000000; - 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,"5954948\n"); - end - FInput1E = 64'h5D8100FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1C03FFFF00000000; - ans = 64'hFFDFFF 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,"5955949\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3400000000000000; - ans = 64'h000001 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,"5956950\n"); - end - FInput1E = 64'h7D60B32C00000000; - FInput2E = 64'h772B962 00000000; - FInput3E = 64'h037FFFEF00000000; - ans = 64'hFFFFFF 400000000; - 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,"5957951\n"); - end - FInput1E = 64'h4030000000000000; - FInput2E = 64'hFFFFF00 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,"5958952\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3D0006FF00000000; - ans = 64'hFFFFFF C00000000; - 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,"5959953\n"); - end - FInput1E = 64'h381B35A400000000; - FInput2E = 64'h4AE9D9F 00000000; - FInput3E = 64'hFEFFFFFF00000000; - 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,"5960954\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h7F80000000000000; - ans = 64'h000FFE 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,"5961955\n"); - end - FInput1E = 64'h002FFFFF00000000; - FInput2E = 64'hFFEFDFF 00000000; - FInput3E = 64'h018E2E2300000000; - ans = 64'hBF11D7 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,"5962956\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 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,"5963957\n"); - end - FInput1E = 64'h3FAEF61500000000; - FInput2E = 64'hE342895 00000000; - FInput3E = 64'h1E00008000000000; - ans = 64'h1FFFFE 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,"5964958\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000001 800000000; - 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,"5965959\n"); - end - FInput1E = 64'hCFAFFFFF00000000; - FInput2E = 64'hFBDFFFF 00000000; - FInput3E = 64'h011AE55E00000000; - ans = 64'hD694F6 B00000000; - 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,"5966960\n"); - end - FInput1E = 64'hC651010000000000; - 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,"5967961\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hBCFFFFFF00000000; - ans = 64'hFFEDFF 200000000; - 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,"5968962\n"); - end - FInput1E = 64'h405FFFFC00000000; - FInput2E = 64'h000003E 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 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,"5969963\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h49FFFFFD00000000; - ans = 64'hFF7FFE 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,"5970964\n"); - end - FInput1E = 64'h7FEFFC0000000000; - FInput2E = 64'h1000000 00000000; - FInput3E = 64'hFBFC000000000000; - 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,"5971965\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 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,"5972966\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFDFFE 00000000; - FInput3E = 64'hC1B8A43100000000; - ans = 64'hD773F0 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,"5973967\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFD00000000000000; - 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,"5974968\n"); - end - FInput1E = 64'hFFD0000000000000; - FInput2E = 64'h0007EFF 00000000; - FInput3E = 64'hDE007FFF00000000; - ans = 64'hFFFBFF 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,"5975969\n"); - end - FInput1E = 64'hC3CFFF0000000000; - FInput2E = 64'hFFFFFFF 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,"5976970\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h30FFFFFF00000000; - 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,"5977971\n"); - end - FInput1E = 64'h3FFFFFDF00000000; - FInput2E = 64'hFFDFFFE 00000000; - FInput3E = 64'hFE00000000000000; - ans = 64'h000001 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,"5978972\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hD800000000000000; - ans = 64'h7FFFFF 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,"5979973\n"); - end - FInput1E = 64'hBFCDFFFF00000000; - FInput2E = 64'hFFFFFFB 00000000; - FInput3E = 64'h1D03FFFF00000000; - ans = 64'hBFFFFE C00000000; - 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,"5980974\n"); - end - FInput1E = 64'hFFF0000000000000; - 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,"5981975\n"); - end - FInput1E = 64'h7FF99F1200000000; - FInput2E = 64'h56CA2AF 00000000; - FInput3E = 64'h06FFEFFF00000000; - 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,"5982976\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"5983977\n"); - end - FInput1E = 64'hBF40000000000000; - FInput2E = 64'h0400100 00000000; - FInput3E = 64'h2EFFFFFF00000000; - ans = 64'hFF81FE 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,"5984978\n"); - end - FInput1E = 64'hAB30003F00000000; - FInput2E = 64'hFFFBFFF 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,"5985979\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFCAC764200000000; - ans = 64'hFF9D74 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,"5986980\n"); - end - FInput1E = 64'hBDAFFFFF00000000; - FInput2E = 64'hFC00007 00000000; - FInput3E = 64'h0100000000000000; - 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,"5987981\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'hFBF0000000000000; - 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,"5988982\n"); - end - FInput1E = 64'h43C1E00000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h44B4E9D700000000; - ans = 64'h2F4EC1 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,"5989983\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 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,"5990984\n"); - end - FInput1E = 64'h401EFFFF00000000; - FInput2E = 64'hFFFFBFF 00000000; - FInput3E = 64'h0084DD3500000000; - ans = 64'h4FE1B3 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,"5991985\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h34FFFFFF00000000; - 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,"5992986\n"); - end - FInput1E = 64'hC000001F00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'hF392791F00000000; - ans = 64'h124142 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,"5993987\n"); - end - FInput1E = 64'hBFB7687E00000000; - FInput2E = 64'hED4BEDC 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,"5994988\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h3DFFFFE000000000; - ans = 64'h000008 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,"5995989\n"); - end - FInput1E = 64'h8564D3A100000000; - FInput2E = 64'hAD6C41D 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000000 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,"5996990\n"); - end - FInput1E = 64'hFFF0000000000000; - FInput2E = 64'h0000001 00000000; - FInput3E = 64'h6028B89D00000000; - ans = 64'hA32AC3 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,"5997991\n"); - end - FInput1E = 64'h3CA0040000000000; - FInput2E = 64'h0000200 00000000; - FInput3E = 64'h2FFFFFFF00000000; - ans = 64'h010000 B00000000; - 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,"5998992\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"5999993\n"); - end - FInput1E = 64'h61EBFFFF00000000; - FInput2E = 64'hFFFFDFF 00000000; - FInput3E = 64'h0500000000000000; - ans = 64'h00107F 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,"6000994\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF 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,"6001995\n"); - end - FInput1E = 64'h41D07C7C00000000; - FInput2E = 64'h3A55289 00000000; - FInput3E = 64'h3D7FFFFF00000000; - ans = 64'hFFFFF7 900000000; - flags = 5'hE0; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"E0 "); - $fwrite(fp,"6002996\n"); - end - FInput1E = 64'hBFE0080000000000; - 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,"6003997\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h3F6487CA00000000; - ans = 64'hFF00C3 B00000000; - 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,"6004998\n"); - end - FInput1E = 64'h302F800000000000; - FInput2E = 64'h2000000 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,"6005999\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000000000000; - ans = 64'h0037FF 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,"6007000\n"); - end - FInput1E = 64'h3500FFFD00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'h001200 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,"6008001\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"6009002\n"); - end - FInput1E = 64'hC7FFFF8000000000; - FInput2E = 64'h0040000 00000000; - FInput3E = 64'h23003F7F00000000; - 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,"6010003\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - 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,"6011004\n"); - end - FInput1E = 64'hC02F800000000000; - FInput2E = 64'h0400000 00000000; - FInput3E = 64'hFB01FFFF00000000; - ans = 64'hDFFFFF 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,"6012005\n"); - end - FInput1E = 64'h480FFFF000000000; - FInput2E = 64'h0000000 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,"6013006\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1DBFFFFF00000000; - ans = 64'hFFFFBE 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,"6014007\n"); - end - FInput1E = 64'h402FFF7F00000000; - FInput2E = 64'hFFF7FFE 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,"6015008\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h68FFFFFF00000000; - ans = 64'hEF7FFE 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,"6016009\n"); - end - FInput1E = 64'hBBF0000000000000; - FInput2E = 64'h00203FE 00000000; - FInput3E = 64'hD158339E00000000; - ans = 64'h008594 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,"6017010\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - 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,"6018011\n"); - end - FInput1E = 64'hB81424E400000000; - FInput2E = 64'hA9FF908 00000000; - FInput3E = 64'hD367959900000000; - ans = 64'h56918F 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,"6019012\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - 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,"6020013\n"); - end - FInput1E = 64'h0D3FBCDD00000000; - FInput2E = 64'h52C0A03 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'h000107 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,"6021014\n"); - end - FInput1E = 64'h380C28D300000000; - FInput2E = 64'h07A98B9 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,"6022015\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7FFBFFFF00000000; - ans = 64'hF7FFFF D00000000; - flags = 5'hFF; -#10 - // IEEE 754-2008 section 6.3 states: "When ether an input or result is NaN, this - // standard does not interpret the sign of a NaN." - wnan = &FmaResultM[62:55] && |FmaResultM[54:32]; - xnan = &FInput1E[62:55] && |FInput1E[54:32]; - ynan = &FInput2E[62:55] && |FInput2E[54:32]; - znan = &FInput3E[62:55] && |FInput3E[54:32]; - ansnan = &ans[62:55] && |ans[54:32]; - xnorm = ~(|FInput1E[62:55]) && |FInput1E[54:32] ? {FInput1E[50:0], 1'b0} : FInput1E; - ynorm = ~(|FInput2E[62:55]) && |FInput2E[54:32] ? {FInput2E[50:0], 1'b0} : FInput2E; - if(FmaFlagsM != flags || (!wnan && (FmaResultM != ans)) || (wnan && ansnan && ~(((xnan && (FmaResultM[62:0] == {FInput1E[62:55],1'b1,FInput1E[53:0]})) || (ynan && (FmaResultM[62:0] == {FInput2E[62:55],1'b1,FInput2E[53:0]})) || (znan && (FmaResultM[62:0] == {FInput3E[62:55],1'b1,FInput3E[53:0]})) || (FmaResultM[62:0] == ans[62:0])) ))) begin - $fwrite(fp, "%h %h %h %h %h Wrong ",FInput1E,FInput2E, FInput3E, FmaResultM, ans); - if(FmaResultM == 64'h8000000000000000) $fwrite(fp, "FmaResultM=-zero "); - if(~(|FInput1E[62:55]) && |FInput1E[54:32]) $fwrite(fp, "xdenorm "); - if(~(|FInput2E[62:55]) && |FInput2E[54:32]) $fwrite(fp, "ydenorm "); - if(~(|FInput3E[62:55]) && |FInput3E[54:32]) $fwrite(fp, "zdenorm "); - if(FmaFlagsM[4] != 0) $fwrite(fp, "invld "); - if(FmaFlagsM[2] != 0) $fwrite(fp, "ovrflw "); - if(FmaFlagsM[1] != 0) $fwrite(fp, "unflw "); - if(FmaResultM == 64'hFF80000000000000) $fwrite(fp, "FmaResultM=-inf "); - if(FmaResultM == 64'h7F80000000000000) $fwrite(fp, "FmaResultM=+inf "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && ~FmaResultM[54]) $fwrite(fp, "FmaResultM=sigNaN "); - if(&FmaResultM[62:55] && |FmaResultM[54:32] && FmaResultM[54] ) $fwrite(fp, "FmaResultM=qutNaN "); - if(ans == 64'hFF80000000000000) $fwrite(fp, "ans=-inf "); - if(ans == 64'h7F80000000000000) $fwrite(fp, "ans=+inf "); - if(&ans[62:55] && |ans[54:32] && ~ans[54] ) $fwrite(fp, "ans=sigNaN "); - if(&ans[62:55] && |ans[54:32] && ans[54]) $fwrite(fp, "ans=qutNaN "); - $fwrite(fp,"FF "); - $fwrite(fp,"6023016\n"); - end - FInput1E = 64'hC0703FFF00000000; - FInput2E = 64'hFFFFF7E 00000000; - FInput3E = 64'h01FFFFFF00000000; - ans = 64'hFFFFFF 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,"6024017\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFFFBFF00000000; - ans = 64'hFFF7FF 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,"6025018\n"); - end - FInput1E = 64'h7FEFFF8000000000; - FInput2E = 64'h0004000 00000000; - FInput3E = 64'h3CE0000000000000; - ans = 64'h000000 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,"6026019\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"6027020\n"); - end - FInput1E = 64'hFFF200FF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hF900003F00000000; - 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,"6028021\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE00000000000000; - 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,"6029022\n"); - end - FInput1E = 64'h47E0801F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFEBFFFFF00000000; - ans = 64'hFBFFFE 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,"6030023\n"); - end - FInput1E = 64'h3CA3201400000000; - FInput2E = 64'hCF5A2BD 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,"6031024\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFD00000300000000; - ans = 64'hFFFFFF 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,"6032025\n"); - end - FInput1E = 64'h3B5FFFDF00000000; - FInput2E = 64'hFFFFBFE 00000000; - FInput3E = 64'hFF00000000000000; - 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,"6033026\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1C007FFF00000000; - ans = 64'hFFF7FE 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,"6034027\n"); - end - FInput1E = 64'hC58FFFF000000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'hE0FFFFFF00000000; - ans = 64'h3FFFFF 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,"6035028\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"6036029\n"); - end - FInput1E = 64'h3EF0002000000000; - FInput2E = 64'h3FFFFFF 00000000; - FInput3E = 64'hFE0000FF00000000; - ans = 64'hFFDFFF 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,"6037030\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000000 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,"6038031\n"); - end - FInput1E = 64'h4014000000000000; - FInput2E = 64'h7FFFFFF 00000000; - FInput3E = 64'hF47CCC5A00000000; - ans = 64'h811B00 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,"6039032\n"); - end - FInput1E = 64'hBF37283400000000; - FInput2E = 64'h3E27E57 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,"6040033\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFE405CC500000000; - ans = 64'h7F3599 A00000000; - 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,"6041034\n"); - end - FInput1E = 64'h405FFFBF00000000; - FInput2E = 64'hF000000 00000000; - FInput3E = 64'hCA00000000000000; - ans = 64'h000001 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,"6042035\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFB00000000000000; - ans = 64'h002007 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,"6043036\n"); - end - FInput1E = 64'h7FE07FFF00000000; - FInput2E = 64'hFFF7FFF 00000000; - FInput3E = 64'h7EFFFF8000000000; - 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,"6044037\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"6045038\n"); - end - FInput1E = 64'hB7E0E58100000000; - FInput2E = 64'h14F3F56 00000000; - FInput3E = 64'h0100000800000000; - ans = 64'h000007 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,"6046039\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'hFDFFFFFF00000000; - ans = 64'hFFFFFE 200000000; - 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,"6047040\n"); - end - FInput1E = 64'h47E0000000000000; - FInput2E = 64'h00FFEFF 00000000; - FInput3E = 64'h0177FFFF00000000; - 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,"6048041\n"); - end - FInput1E = 64'hBA507FFF00000000; - FInput2E = 64'h0000000 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,"6049042\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h1A07FBFF00000000; - 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,"6050043\n"); - end - FInput1E = 64'h93AFFFFF00000000; - FInput2E = 64'hFEFFEFF 00000000; - FInput3E = 64'hFF00000000000000; - 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,"6051044\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h6BA9C4FE00000000; - ans = 64'hACFBEF 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,"6052045\n"); - end - FInput1E = 64'hC3CFFFFF00000000; - FInput2E = 64'hEFFFFFF 00000000; - FInput3E = 64'h1D00000000000000; - ans = 64'h1FFFF7 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,"6053046\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 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,"6054047\n"); - end - FInput1E = 64'h3CFFFFFF00000000; - FInput2E = 64'hFFFFF5F 00000000; - FInput3E = 64'h15BDF02C00000000; - ans = 64'hA7EBCB 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,"6055048\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFFFFFF B00000000; - 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,"6056049\n"); - end - FInput1E = 64'h4030000400000000; - FInput2E = 64'h000003E 00000000; - FInput3E = 64'hFD08000000000000; - ans = 64'h000004 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,"6057050\n"); - end - FInput1E = 64'h480FFFFF00000000; - FInput2E = 64'hFFFF800 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,"6058051\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h335E6D7700000000; - ans = 64'h5BF7A9 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,"6059052\n"); - end - FInput1E = 64'h404FFFFF00000000; - FInput2E = 64'hFFBFEFF 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,"6060053\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h7E00020100000000; - 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,"6061054\n"); - end - FInput1E = 64'hC34F800000000000; - FInput2E = 64'h01FFFFF 00000000; - FInput3E = 64'h6BA6003C00000000; - ans = 64'h66AF98 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,"6062055\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - 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,"6063056\n"); - end - FInput1E = 64'h5ACFFEFF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'h867F12AE00000000; - ans = 64'hAA7A87 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,"6064057\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - 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,"6065058\n"); - end - FInput1E = 64'hC03FFFFF00000000; - FInput2E = 64'hFD00000 00000000; - FInput3E = 64'h1D00000000000000; - 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,"6066059\n"); - end - FInput1E = 64'h3C00002000000000; - FInput2E = 64'h00003FE 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,"6067060\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0A007F7F00000000; - 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,"6068061\n"); - end - FInput1E = 64'h41FF80FF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFFFFFFFF00000000; - 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,"6069062\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F00000400000000; - ans = 64'h007FFE 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,"6070063\n"); - end - FInput1E = 64'hC3C0000000000000; - FInput2E = 64'h4000000 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'h0007FE C00000000; - 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,"6071064\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"6072065\n"); - end - FInput1E = 64'hC150010000000000; - FInput2E = 64'h0000100 00000000; - FInput3E = 64'h02FFFBFF00000000; - ans = 64'hFFFFDF 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,"6073066\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'h000001 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,"6074067\n"); - end - FInput1E = 64'hC3CCACED00000000; - FInput2E = 64'h1E71A9D 00000000; - FInput3E = 64'hF5000FFF00000000; - 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,"6075068\n"); - end - FInput1E = 64'h3F913D0800000000; - FInput2E = 64'h0588A88 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,"6076069\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7E4000FF00000000; - ans = 64'hFFFFFF 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,"6077070\n"); - end - FInput1E = 64'hC02FFFFF00000000; - FInput2E = 64'hDFFFFFC 00000000; - FInput3E = 64'hCAFFFFFF00000000; - ans = 64'hFFFFFF 700000000; - 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,"6078071\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h1FFFFFFF00000000; - ans = 64'h00000E 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,"6079072\n"); - end - FInput1E = 64'hC00FBF7F00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h74F8000000000000; - ans = 64'h0003FE 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,"6080073\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - 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,"6081074\n"); - end - FInput1E = 64'hD6F3833200000000; - FInput2E = 64'h38FC83C 00000000; - FInput3E = 64'h02FFFFF700000000; - 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,"6082075\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFE00000000000000; - 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,"6083076\n"); - end - FInput1E = 64'hC3EFFFFF00000000; - FInput2E = 64'hDFEFFFE 00000000; - FInput3E = 64'hF9FFFFFF00000000; - 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,"6084077\n"); - end - FInput1E = 64'h4650000000000000; - FInput2E = 64'hFFFFF7E 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,"6085078\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7F78B06600000000; - ans = 64'hC0933F 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,"6086079\n"); - end - FInput1E = 64'hBF9129B700000000; - FInput2E = 64'hEF9F931 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFF 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,"6087080\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF90CCD400000000; - ans = 64'hD060F2 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,"6088081\n"); - end - FInput1E = 64'h3FFFF7FF00000000; - FInput2E = 64'hDFFFFFF 00000000; - FInput3E = 64'hFBFFFFFF00000000; - ans = 64'h03FFFF 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,"6089082\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - 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,"6090083\n"); - end - FInput1E = 64'h3FED482B00000000; - FInput2E = 64'h72F1EF3 00000000; - FInput3E = 64'hEEFFFFFF00000000; - ans = 64'hFDFBFF 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,"6091084\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100000000000000; - 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,"6092085\n"); - end - FInput1E = 64'hC1CB030700000000; - FInput2E = 64'hC2A3F83 00000000; - FInput3E = 64'hFA5BBBEE00000000; - ans = 64'h6739BB 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,"6093086\n"); - end - FInput1E = 64'h4340000100000000; - FInput2E = 64'h7FFFFFF 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,"6094087\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h91FFFFFF00000000; - ans = 64'hFE01FF 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,"6095088\n"); - end - FInput1E = 64'h480FFFFF00000000; - FInput2E = 64'hF81FFFF 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,"6096089\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hCAFFF80000000000; - 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,"6097090\n"); - end - FInput1E = 64'h402FBFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h80FFFFFF00000000; - ans = 64'hFF7FFF 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,"6098091\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"6099092\n"); - end - FInput1E = 64'hBCAAF3F800000000; - FInput2E = 64'h72F1876 00000000; - FInput3E = 64'h0100000000000000; - ans = 64'hFFFBFE 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,"6100093\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"6101094\n"); - end - FInput1E = 64'h43D7455B00000000; - FInput2E = 64'hE96BCAE 00000000; - FInput3E = 64'h1C00003D00000000; - ans = 64'hFFFFFF B00000000; - 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,"6102095\n"); - end - FInput1E = 64'h41E0000200000000; - 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,"6103096\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h7E00000000000000; - ans = 64'h00021E 300000000; - 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,"6104097\n"); - end - FInput1E = 64'hB7F3FFDF00000000; - FInput2E = 64'hFFFFFFF 00000000; - FInput3E = 64'h0000000000000000; - ans = 64'h000000 700000000; - 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,"6105098\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0200007F00000000; - ans = 64'hFFDFFF 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,"6106099\n"); - end - FInput1E = 64'hC0CFBFFF00000000; - FInput2E = 64'h0000000 00000000; - FInput3E = 64'h0228A37D00000000; - ans = 64'hF78A3F 900000000; - 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,"6107100\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"6108101\n"); - end - FInput1E = 64'h7D100FFF00000000; - FInput2E = 64'hFFF0000 00000000; - FInput3E = 64'h3900000000000000; - ans = 64'h07FFC0 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,"6109102\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h01FFFFFF00000000; - 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,"6110103\n"); - end - FInput1E = 64'hB6E0000000000000; - FInput2E = 64'h003FFFF 00000000; - FInput3E = 64'h57777E3100000000; - ans = 64'h4BF074 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,"6111104\n"); - end - FInput1E = 64'h08EFFF7F00000000; - FInput2E = 64'hFFFEFFF 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,"6112105\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h0100200800000000; - 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,"6113106\n"); - end - FInput1E = 64'h40101BFF00000000; - FInput2E = 64'hFFFFFFF 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,"6114107\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h80457DAE00000000; - ans = 64'h9BCF35 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,"6115108\n"); - end - FInput1E = 64'h37F0FFFF00000000; - FInput2E = 64'hFF7FFFF 00000000; - FInput3E = 64'h03E0000000000000; - ans = 64'h0003FF F00000000; - 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,"6116109\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"6117110\n"); - end - FInput1E = 64'hD2F0000000000000; - FInput2E = 64'h6000000 00000000; - FInput3E = 64'h89DAAFE800000000; - ans = 64'hF95075 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,"6118111\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFEFFFFFF00000000; - ans = 64'hFFFFFF 000000000; - 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,"6119112\n"); - end - FInput1E = 64'hCA280C4800000000; - FInput2E = 64'hB1B67F2 00000000; - FInput3E = 64'h01AD42AB00000000; - ans = 64'hBABFF9 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,"6120113\n"); - end - FInput1E = 64'hBFC0180000000000; - FInput2E = 64'h0000000 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,"6121114\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h3EFFE00000000000; - ans = 64'h000003 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,"6122115\n"); - end - FInput1E = 64'h3F94A26A00000000; - FInput2E = 64'h44D8F04 00000000; - FInput3E = 64'hFFFFFFFF00000000; - ans = 64'hFFFFFE B00000000; - 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,"6123116\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h90FFFFFF00000000; - ans = 64'hEFFFFF 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,"6124117\n"); - end - FInput1E = 64'h222FFFFF00000000; - FInput2E = 64'hFFFF7FF 00000000; - FInput3E = 64'hFB10544300000000; - ans = 64'hB4C2F0 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,"6125118\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"6126119\n"); - end - FInput1E = 64'h4030020000000000; - FInput2E = 64'h0000FFF 00000000; - FInput3E = 64'hFBFFFFFF00000000; - 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,"6127120\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"6128121\n"); - end - FInput1E = 64'h3817B2A800000000; - FInput2E = 64'h1BAB728 00000000; - FInput3E = 64'h7F000FFF00000000; - 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,"6129122\n"); - end - FInput1E = 64'h4000001000000000; - FInput2E = 64'h03FFFFF 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,"6130123\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h2CE0000000000000; - ans = 64'h000200 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,"6131124\n"); - end - FInput1E = 64'h43C0100000000000; - FInput2E = 64'h0000000 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,"6132125\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'h81F7FFFF00000000; - ans = 64'hFEFFFE 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,"6133126\n"); - end - FInput1E = 64'hBFFFFFFF00000000; - FInput2E = 64'hFFFFFF8 00000000; - FInput3E = 64'h02C007FF00000000; - ans = 64'hFFFFFE F00000000; - 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,"6134127\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 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,"6135128\n"); - end - FInput1E = 64'hD090000700000000; - FInput2E = 64'hFFBFFFF 00000000; - FInput3E = 64'h3EFFFFFE00000000; - ans = 64'hFC0000 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,"6136129\n"); - end - FInput1E = 64'hFFFFFFFF00000000; - FInput2E = 64'hFFFFFFE 00000000; - FInput3E = 64'hFF00000000000000; - ans = 64'h000001 C00000000; - 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,"6137130\n"); - end - FInput1E = 64'hC0F0000000000000; - FInput2E = 64'h00FFFEF 00000000; - FInput3E = 64'h00FFFFFF00000000; - ans = 64'hFDFFFF 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,"6138131\n"); - end - FInput1E = 64'hBF600FFF00000000; - 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,"6139132\n"); - end - $stop; + xrf = 64'hb68ffff8000000ff; + y = 64'h3f9080000007ffff; + zrf = 64'h0000000000000000; + ans = 64'hb6307ffbe0080080; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'ha57f319ede38f755; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41e00003fffbffff; + y = 64'hbfdfffffffefffff; + zrf = 64'h0000000000000000; + ans = 64'hc1d00003fff3fffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h80251295103185ae; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc040000000001000; + y = 64'h802fff7fffffffc0; + zrf = 64'h0000000000000000; + ans = 64'h007fff8000001fc0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1dfffffffe00080; + y = 64'h3fa48edf3623f067; + zrf = 64'h0000000000000000; + ans = 64'hc1948edf360f61da; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h47fffffffff9fffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43d36fa3cad3f59e; + y = 64'h802ffdfffbfffffe; + zrf = 64'h0000000000000000; + ans = 64'h84136e6cce2953e4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7f7fd5b86c89ff5; + y = 64'hc340097b5e4f0be0; + zrf = 64'h0000000000000000; + ans = 64'h4b480b93035b0b70; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc22000007fffffff; + y = 64'h24700000ffffffef; + zrf = 64'h0000000000000000; + ans = 64'ha6a00001800007ed; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc3e000000ffdffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h353437f613f7e662; + y = 64'h37f1000000007fff; + zrf = 64'h0000000000000000; + ans = 64'h2d357b7575380687; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffe564443115fb16; + y = 64'h3fbfffffeffbffff; + zrf = 64'h0000000000000000; + ans = 64'hffb5644426612c74; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ceec111f7d2af02; + y = 64'h39715bac743e2963; + zrf = 64'h0000000000000000; + ans = 64'h3670aeac5438df23; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h41ec86d0aa48e2a2; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h400effffffffefff; + y = 64'hc7e10000000000ff; + zrf = 64'h0000000000000000; + ans = 64'hc80077fffffff876; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbff007fffffffffb; + y = 64'hbe6ffffffff87fff; + zrf = 64'h0000000000000000; + ans = 64'h3e7007fffffc3e1b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc03000ffffffffe0; + y = 64'h47effdfffdffffff; + zrf = 64'h0000000000000000; + ans = 64'hc82fffffddffdfbf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hba2fffdffff7ffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc00000000011fe; + y = 64'h3fdfffffffffff03; + zrf = 64'h0000000000000000; + ans = 64'hbfb000000000117f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43e0000020007ffe; + y = 64'h0010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0400000020007ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1cfdeed86c3bb69; + y = 64'h400003ffffbffffe; + zrf = 64'h0000000000000000; + ans = 64'hc1dfe6e541a5f09d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h0010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc25f117a8f103940; + y = 64'h4004e72ff4f60ee2; + zrf = 64'h0000000000000000; + ans = 64'hc2744b6155a30e59; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc01f000000080000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc513492fa35969e3; + y = 64'hbfcffdffffffffef; + zrf = 64'h0000000000000000; + ans = 64'h44f347fb105f3443; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403000000000fffe; + y = 64'h0010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0050000000010000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hf6d01003ffffffff; + y = 64'h419ffffffdffefff; + zrf = 64'h0000000000000000; + ans = 64'hf8801003fefef7b6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h0010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha83100000007fffe; + y = 64'h41e0000effffffff; + zrf = 64'h0000000000000000; + ans = 64'haa21000ff0080004; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc3fffffdfffffffd; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d000fffffdffff; + y = 64'h001fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h020000fffffdffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d08000001fffff; + y = 64'h40200000000005ff; + zrf = 64'h0000000000000000; + ans = 64'hc40080000020062d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h001fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h1a6ffffffffdffee; + y = 64'hc0dfdffffffff7ff; + zrf = 64'h0000000000000000; + ans = 64'h9b5fdffffffdf9ed; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h4800040080000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3eb000000000003f; + y = 64'h37ec0c2ea2e8a60d; + zrf = 64'h0000000000000000; + ans = 64'h36ac0c2ea2e8a67c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hf17ffffffff7fff0; + y = 64'h001ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hb1affffffff7ffee; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02ffffffe7fffff; + y = 64'hbfb000000007ffbe; + zrf = 64'h0000000000000000; + ans = 64'h3feffffffe8fff7b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h001ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffeffbfffffffefe; + y = 64'h41e003ffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h81e001ff7fffff7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h434000080000003e; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbacc892b4c13f29c; + y = 64'h41e00000081fffff; + zrf = 64'h0000000000000000; + ans = 64'hbcbc892b5a919a96; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h50e0100000001000; + y = 64'h3ca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h4d90100000001000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc04000010000000e; + y = 64'h3cc1ffffc0000000; + zrf = 64'h0000000000000000; + ans = 64'hbd120000dffffc0f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3ca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3d40000001007fff; + y = 64'heca000001bffffff; + zrf = 64'h0000000000000000; + ans = 64'he9f000001d007fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f69ffffffffffff; + y = 64'h404716ea43fac45c; + zrf = 64'h0000000000000000; + ans = 64'h3fc2c29e573bbf8b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h400327ca64d70ec7; + y = 64'h3ca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h3cb327ca64d70ec9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd8bfff000000007f; + y = 64'hb956dbd0aee817c4; + zrf = 64'h0000000000000000; + ans = 64'h5226db19d062a0de; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3ca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc007b8561c35da43; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h405f40f41f6021f8; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe00100001fffff; + y = 64'hc24003ffffffffbf; + zrf = 64'h0000000000000000; + ans = 64'h42300500402007be; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434fffffffffc003; + y = 64'h3cafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h400fffffffffc003; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc03ffffffbfffffb; + y = 64'hc02ffffffefffeff; + zrf = 64'h0000000000000000; + ans = 64'h407ffffffafffefb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3cafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40086202321a401c; + y = 64'h47f86177898dd055; + zrf = 64'h0000000000000000; + ans = 64'h481293c5d18361f7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h43e207ffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43effe000fffffff; + y = 64'ha18c4acaee4cfd09; + zrf = 64'h0000000000000000; + ans = 64'ha58c49064fc37daf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h74cffffffbff7fff; + y = 64'h3caffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h718ffffffbff7ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h5be00000ffffffbf; + y = 64'h421ffffffdffe000; + zrf = 64'h0000000000000000; + ans = 64'h5e100000feffefaf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3caffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf47ffe000000000; + y = 64'hc1ea1adf9696cf65; + zrf = 64'h0000000000000000; + ans = 64'h4143940d961184f5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h348ffffffdffffdf; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0200003ffffffbf; + y = 64'h40affffbfffffff7; + zrf = 64'h0000000000000000; + ans = 64'hc0e00001ffff7fba; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fdf7cc18997a120; + y = 64'h3fd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3fbf7cc18997a120; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf70200000000003; + y = 64'hc3e0e4757c2948e7; + zrf = 64'h0000000000000000; + ans = 64'h4361063e67219b7c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3dfffff7ffffe00; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hfaeffffffffff010; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41dff52055724a9e; + y = 64'h41f3fffe00000000; + zrf = 64'h0000000000000000; + ans = 64'h43e3f9323615694c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3c567a7fb6402c6; + y = 64'h3fd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc3a567a7fb6402c7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41e0000000000004; + y = 64'h388fffffffffff7e; + zrf = 64'h0000000000000000; + ans = 64'h3a7fffffffffff86; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41bfffffffffffff; + y = 64'hed6fffffffffffe8; + zrf = 64'h0000000000000000; + ans = 64'hef3fffffffffffe7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h381ffffbffffffee; + y = 64'h3fdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h380ffffbffffffee; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1ffffffffeffc00; + y = 64'hce70000800000001; + zrf = 64'h0000000000000000; + ans = 64'h50800007fff7fdfd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1500007f0000000; + y = 64'h80201fffff7ffffe; + zrf = 64'h0000000000000000; + ans = 64'h01802007ff5fffbf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc1cecf3286229074; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43df400000000000; + y = 64'hbfefffffc003ffff; + zrf = 64'h0000000000000000; + ans = 64'hc3df3fffc183e7ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43dfffffffffff07; + y = 64'h80200007f7ffffff; + zrf = 64'h0000000000000000; + ans = 64'h84100007f7ffff82; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc80e0000001ffffe; + y = 64'hb7efffffffffffe6; + zrf = 64'h0000000000000000; + ans = 64'h400e0000001fffe6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc1c0000000002003; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f500000000000fa; + y = 64'h3fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3f400000000000fa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hc7ffffffffefffdf; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe0004000000080; + y = 64'h401ffffffffff801; + zrf = 64'h0000000000000000; + ans = 64'hc010003ffffffc80; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hb7f17fffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3fc3945feb77579; + y = 64'hc01000100fffffff; + zrf = 64'h0000000000000000; + ans = 64'h441c39625436ba2e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40300020001fffff; + y = 64'h3fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h4020002000200001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hcd100100000fffff; + y = 64'h381fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc5400100000ffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41ffefffffffffdf; + y = 64'hbff8000001000000; + zrf = 64'h0000000000000000; + ans = 64'hc207f40000ff7fe7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h57f01fffffff7fff; + y = 64'h3fd00001f7ffffff; + zrf = 64'h0000000000000000; + ans = 64'h57d02001fbef7ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc870200000010000; + y = 64'h3fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc87020000000ffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3e2fffe000000fff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe36f03e8c9d3cd8; + y = 64'hc7f9a4a35fede985; + zrf = 64'h0000000000000000; + ans = 64'h464261b53aedde07; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc180001ffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01fffffffef0000; + y = 64'h401b5b155998eecc; + zrf = 64'h0000000000000000; + ans = 64'hc04b5b15598a6668; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfb0000400100000; + y = 64'h3feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbfb00004000ffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc8000000400000; + y = 64'hc040000000005fff; + zrf = 64'h0000000000000000; + ans = 64'h4018000000408fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fbe26137bc2717f; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00aaa4fd557ef13; + y = 64'hc3b8917384eb32d0; + zrf = 64'h0000000000000000; + ans = 64'h43d478efdc9216d8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h33b002000007ffff; + y = 64'h3ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h33b002000007ffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f50000000000000; + y = 64'hc1cf9ffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc12f9ffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hb3f000000ffffe00; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fffffffeffffff6; + y = 64'h3fdfffffffff0020; + zrf = 64'h0000000000000000; + ans = 64'h3fefffffefff0017; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf6fffffffffff3f; + y = 64'h3ff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbf6fffffffffff40; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47fffc0000000001; + y = 64'hc03fffff7fffff7f; + zrf = 64'h0000000000000000; + ans = 64'hc84ffbff800fff80; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3ff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3caffe000000ffff; + y = 64'h3fdffc7fffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3c9ffa803800ffe3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbaa6a91cddacae08; + y = 64'h510ff80000020000; + zrf = 64'h0000000000000000; + ans = 64'hcbc6a3729676ad6e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40300000083fffff; + y = 64'h3fffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h40400000083fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3cd00fffff7fffff; + y = 64'hffebc7d81171f5ef; + zrf = 64'h0000000000000000; + ans = 64'hfccbe39fe8a52922; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha1407fff7fffffff; + y = 64'h41cfffbffffffffe; + zrf = 64'h0000000000000000; + ans = 64'ha3207fde8000fffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc030080000ffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4150040020000000; + y = 64'h2eedc50618875049; + zrf = 64'h0000000000000000; + ans = 64'h304dcc7795977e4f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc676f7e5d9e346; + y = 64'h3ffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbfd676f7e5d9e344; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3ffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc18aca47203438e2; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbd607ffffffffbfe; + y = 64'h4024e704bfc3d6c1; + zrf = 64'h0000000000000000; + ans = 64'hbd958e3ce5c1f03a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40664093b187b4e5; + y = 64'h4000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h40764093b187b4e5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbffa5cf563cae7d4; + y = 64'hbfeffbffffffffee; + zrf = 64'h0000000000000000; + ans = 64'h3ffa59a9c51e6e69; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h4000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fcffffffffbffde; + y = 64'hc02fbffdffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc00fbffdfffc07dd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7fedfffffdfffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43e0ff7ffffffffe; + y = 64'hc7effffffffff7ef; + zrf = 64'h0000000000000000; + ans = 64'hcbe0ff7ffffffbb5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h8ad00000000041ff; + y = 64'h4000000000000001; + zrf = 64'h0000000000000000; + ans = 64'h8ae0000000004200; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h5dfffffffff7fffc; + y = 64'hbfffff8000010000; + zrf = 64'h0000000000000000; + ans = 64'hde0fff7ffff9001c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h4000000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffefffffdfffffee; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3cd000000043fffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01d9eadf45189b8; + y = 64'h3f50000000ffffbf; + zrf = 64'h0000000000000000; + ans = 64'hbf7d9eadf62b741e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37effffeffffff00; + y = 64'h400fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h380ffffeffffff00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h400fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hffe58b7bfa0536fd; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc190000007fffeff; + y = 64'h429455aca15996be; + zrf = 64'h0000000000000000; + ans = 64'hc43455acab846bc8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43f00000000fffc0; + y = 64'h400ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h44100000000fffbf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h400ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47efff0008000000; + y = 64'hb1dcb0523546117f; + zrf = 64'h0000000000000000; + ans = 64'hb9dcaf6cb9e07bdb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hb800003ffe000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe0000000000000; + y = 64'hc1ffffffffff0008; + zrf = 64'h0000000000000000; + ans = 64'h41efffffffff0008; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41edfffffffffffe; + y = 64'h4010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h420dfffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc0000000000017; + y = 64'hbfe2697f4b561495; + zrf = 64'h0000000000000000; + ans = 64'h3fb2697f4b5614b0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h4010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ff3fffffbffffff; + y = 64'hbbefffeffffffdff; + zrf = 64'h0000000000000000; + ans = 64'hbbf3fff5fc0000be; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc1c0000007ffbffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fcbd27c9d3cfce9; + y = 64'h3fbf7ffffeffffff; + zrf = 64'h0000000000000000; + ans = 64'h3f9b6332a9e97510; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h404fffff000007fe; + y = 64'h4010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h406fffff00000800; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43f000ffffff7fff; + y = 64'h22300000001fffdf; + zrf = 64'h0000000000000000; + ans = 64'h26300100001f81de; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h4010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'habc0000000000022; + y = 64'hc23ff803ffffffff; + zrf = 64'h0000000000000000; + ans = 64'h2e0ff80400000043; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbca00001ff7ffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfbfffc001000000; + y = 64'h40c00000000040ff; + zrf = 64'h0000000000000000; + ans = 64'hc08fffc0010081fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1c07ffffffff7fe; + y = 64'h401fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc1f07ffffffff7fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf5bfffffffffffa; + y = 64'hbfe6386ce8894329; + zrf = 64'h0000000000000000; + ans = 64'h3f53715f4b781ac0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h401fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47ffffbfffefffff; + y = 64'h381001fdffffffff; + zrf = 64'h0000000000000000; + ans = 64'h402001ddfbfbff00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h078fffffffff00fe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402ff000001fffff; + y = 64'h40759558e27de226; + zrf = 64'h0000000000000000; + ans = 64'h40b58a8e3622388e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb57e5a898766cf; + y = 64'h401ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3fe57e5a898766ce; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb813d14cf9cc6a0f; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h401ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc01002003ffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffe000010003ffff; + y = 64'heb50000000007f7e; + zrf = 64'h0000000000000000; + ans = 64'h2b40000100047f7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hf020400000000100; + y = 64'h4340000000000000; + zrf = 64'h0000000000000000; + ans = 64'hf370400000000100; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f4000400000000; + y = 64'hbf9fffbfc0000000; + zrf = 64'h0000000000000000; + ans = 64'hc7a3ffdbd7f7f800; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h4340000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfdf7ffffefffffe; + y = 64'h3e2ffffffe007fff; + zrf = 64'h0000000000000000; + ans = 64'hbe1f7ffffd087dfd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h40efdeffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40bffffff0010000; + y = 64'hc00fffbf7fffffff; + zrf = 64'h0000000000000000; + ans = 64'hc0dfffbf7001203c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb80ffffffffdfeff; + y = 64'h4340000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbb5ffffffffdff00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7efe0000000001f; + y = 64'h41cb6efdcaa9034a; + zrf = 64'h0000000000000000; + ans = 64'hc9cb538eccde5a61; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h4340000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h400ffffff00007ff; + y = 64'hc1e40fffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc2040ffff5f80502; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfdfffff8001ffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41c001ffffffff7f; + y = 64'h43e061baf61ffb1f; + zrf = 64'h0000000000000000; + ans = 64'h45b063c72d7ebe9b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37e0080000003ffe; + y = 64'h434fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3b40080000003ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1f9046426f60438; + y = 64'hbf7ffff7fffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4189045de5dcfa79; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h434fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc03ffffffc00fffe; + y = 64'h802002000007ffff; + zrf = 64'h0000000000000000; + ans = 64'h007001fffe08400e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc5b00010000003fe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3770000000000107; + y = 64'h3fd48f00324582ef; + zrf = 64'h0000000000000000; + ans = 64'h37548f0032458441; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb5affffffff7fffe; + y = 64'h434ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hb90ffffffff7fffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc0c468246a1620; + y = 64'hbf9fc40000000000; + zrf = 64'h0000000000000000; + ans = 64'hbf70a4f7e125cf36; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h434ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0200000001fffff; + y = 64'hbfc000ffffbffffe; + zrf = 64'h0000000000000000; + ans = 64'h3ff000ffffe001fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc1f6c9921fedfd35; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02e0000ffffffff; + y = 64'h3f8fc00000000100; + zrf = 64'h0000000000000000; + ans = 64'hbfcdc400fe0000ef; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h7fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc80f48a9d9dbc8c6; + y = 64'hc1c007ffffeffffe; + zrf = 64'h0000000000000000; + ans = 64'h49df584e2ea96dfd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc02000003fff7fff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7feffff800010000; + y = 64'h37f21ffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h77f21ffb780090ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc80c5e05644472e7; + y = 64'h7fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h87fc5e05644472e8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfeffffffffffaff; + y = 64'hbf800003fffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3f800003fffffd7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3cbfffffffe00ffe; + y = 64'hc1cc000001000000; + zrf = 64'h0000000000000000; + ans = 64'hbe9c000000e40dfe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hb80fffffffc20000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb35e061abc769f3a; + y = 64'hc078000003fffffe; + zrf = 64'h0000000000000000; + ans = 64'h33e684941119bac2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0ae000000000fff; + y = 64'h7fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h80ae000000000ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h643cfffffffffffe; + y = 64'h3fc000000807ffff; + zrf = 64'h0000000000000000; + ans = 64'h640d00000e8e7ffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3efffdffffdfffe; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3ff000000fffff80; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0114a0730d7f7a8; + y = 64'hc3dffc0000fffffe; + zrf = 64'h0000000000000000; + ans = 64'h440147ddf07c2ce2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc071f1a35952c0a4; + y = 64'h7feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h8071f1a35952c0a2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf74200a147ea166; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403a793cfb1e2471; + y = 64'hbff0000100007fff; + zrf = 64'h0000000000000000; + ans = 64'hc03a793ea2b2c7eb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fd00003fffbfffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc09fffff7ffffff0; + y = 64'h3cabffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbd5bffff8ffffff1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3800008000000002; + y = 64'h7ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7800008000000002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3dafffc3fffffffe; + y = 64'h480ffff800000002; + zrf = 64'h0000000000000000; + ans = 64'h45cfffbc000f0000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40cffffffffff880; + y = 64'h39100003fff00000; + zrf = 64'h0000000000000000; + ans = 64'h39f00003ffeffc40; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h4190200080000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41e56167e987d508; + y = 64'hc3507641c18b2d15; + zrf = 64'h0000000000000000; + ans = 64'hc545ff6e26393368; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f43652672b8c04e; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3d1ffffbfe000000; + y = 64'h216898822a24af3f; + zrf = 64'h0000000000000000; + ans = 64'h1e98987f158ae1d8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1c8a60ffe18c7bf; + y = 64'hc01bdaf03620c126; + zrf = 64'h0000000000000000; + ans = 64'h41f574c1d28158e8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc741ffffffffffef; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3db000003ffffff7; + y = 64'h43caaa16868406bc; + zrf = 64'h0000000000000000; + ans = 64'h418aaa16f12c60c8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha220000000000bff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h39d0000007c00000; + y = 64'h37efffffe07fffff; + zrf = 64'h0000000000000000; + ans = 64'h31cfffffeffffff0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc7f0000000000ffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf8fffffffffdfef; + y = 64'h7fd000000100ffff; + zrf = 64'h0000000000000000; + ans = 64'hff7000000100eff6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfb00000001bffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402fffffffffdfdf; + y = 64'hc02fffffffffff6e; + zrf = 64'h0000000000000000; + ans = 64'hc06fffffffffdf4d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h1b6e0000000007ff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4037ab310ba6cb64; + y = 64'h7fefdffffdfffffe; + zrf = 64'h0000000000000000; + ans = 64'h00379385d9207187; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00195fa60036675; + y = 64'h8000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfd000003fffbfff; + y = 64'hc00fffe000000000; + zrf = 64'h0000000000000000; + ans = 64'h3fefffe07ffeffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h8000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc020000000800004; + y = 64'h43d4a4d3867e8d13; + zrf = 64'h0000000000000000; + ans = 64'hc404a4d38723b3b4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc1f8f41f2ee582b0; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37f0000000efffff; + y = 64'hc3d00007fffffeff; + zrf = 64'h0000000000000000; + ans = 64'hbbd0000800efff75; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h64b00000000bffff; + y = 64'h3b816cd156a62ab8; + zrf = 64'h0000000000000000; + ans = 64'h60416cd156b33c54; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h4803ffffffffefff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfd7c2590b89786f; + y = 64'hc000f4df3c754c0e; + zrf = 64'h0000000000000000; + ans = 64'h3fe92df857f975ae; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f0ffffffeffffc0; + y = 64'hc003fffffff80000; + zrf = 64'h0000000000000000; + ans = 64'hbf23ffffff57ffd8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d2bbe6deae1f63; + y = 64'hffd0000000004010; + zrf = 64'h0000000000000000; + ans = 64'h03b2bbe6deae6a66; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h403000000000003f; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41cffffffff7bfff; + y = 64'h40600007fffffff8; + zrf = 64'h0000000000000000; + ans = 64'h42400007fffbdff6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1dfff7ffffffff8; + y = 64'hb7efffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h39dfff7ffffffff8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h8020200007fffffe; + y = 64'hc59000000000083f; + zrf = 64'h0000000000000000; + ans = 64'h05c020000800084e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hffefff8000080000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h58b00000008003fe; + y = 64'h3b6ff00001fffffe; + zrf = 64'h0000000000000000; + ans = 64'h542ff00002ff87f7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h77f34f18a693527b; + y = 64'h8010000000000000; + zrf = 64'h0000000000000000; + ans = 64'hb8134f18a693527b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h42bfffffff80001e; + y = 64'h408000004000000f; + zrf = 64'h0000000000000000; + ans = 64'h435000003fc0001e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h8010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7efffffc00007ff; + y = 64'hc030000003fffffc; + zrf = 64'h0000000000000000; + ans = 64'h482fffffc80007e8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbec52f80f9199ec0; + y = 64'hc3efff000007fffe; + zrf = 64'h0000000000000000; + ans = 64'h42c52ed77d1721d2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43f000000407ffff; + y = 64'h8010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h8410000004080000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401cc0bdc0613b09; + y = 64'hbec09901b9b2a079; + zrf = 64'h0000000000000000; + ans = 64'hbeedd3b3f0a24b73; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h8010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb00200000000ff; + y = 64'hc0000000011fffff; + zrf = 64'h0000000000000000; + ans = 64'hbfc00200012024fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fefffffffdff800; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h9a5f095312a9cdc5; + y = 64'hc1f1ffffdfffffff; + zrf = 64'h0000000000000000; + ans = 64'h1c61753e9b7630ac; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc340000000000000; + y = 64'h801fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h036fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37e0000003fff7fe; + y = 64'h37effffbbfffffff; + zrf = 64'h0000000000000000; + ans = 64'h2fdffffbc7ffeeec; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h801fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1c0007dffffffff; + y = 64'hbfb3fff7fffffffe; + zrf = 64'h0000000000000000; + ans = 64'h418400957fc0fffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3ef0000000000016; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3807fffffffffdff; + y = 64'h4230000000002080; + zrf = 64'h0000000000000000; + ans = 64'h3a48000000002ebf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1effffffffffc02; + y = 64'h801ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h021ffffffffffc01; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41c0000007ffffff; + y = 64'h49103fffefffffff; + zrf = 64'h0000000000000000; + ans = 64'h4ae03ffff81ffff6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h801ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb81ffffffdfeffff; + y = 64'h403dfffffff80000; + zrf = 64'h0000000000000000; + ans = 64'hb86dfffffe170fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h32ee409a5f3b66fa; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3dcffffff0000000; + y = 64'hc06fffffff800800; + zrf = 64'h0000000000000000; + ans = 64'hbe4fffffef800800; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2b50000200000020; + y = 64'hbca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'ha800000200000020; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1c39e834dacb36b; + y = 64'h468f7fe000000000; + zrf = 64'h0000000000000000; + ans = 64'hc8634ff5a1f2b2f0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h391f800001000000; + y = 64'h46420003ffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3f71b803f0900020; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3ff3d4f7273f6526; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h407effbfffffffff; + y = 64'h3e00000040001fff; + zrf = 64'h0000000000000000; + ans = 64'h3e8effc07bff3dfd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00001000000007e; + y = 64'hbca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h3cb0010000000080; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000003eff; + y = 64'h419ffffff8200000; + zrf = 64'h0000000000000000; + ans = 64'h01bffffff8207dfe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3f000000020003f; + y = 64'h3fbf800000000006; + zrf = 64'h0000000000000000; + ans = 64'hc3bf8000003f0082; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h41d1fdffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f9106b08704172; + y = 64'h43f0000000bffffe; + zrf = 64'h0000000000000000; + ans = 64'h4bf9106b099d0674; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3bddd6cd1eacf35d; + y = 64'hbcafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hb89dd6cd1eacf35c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3810003ffdffffff; + y = 64'hc01f01d4d299b191; + zrf = 64'h0000000000000000; + ans = 64'hb83f0250d60cc15b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbcafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1f00013fffffffe; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc3d52e10f5566786; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403001fffffffeff; + y = 64'h402ffffdfffffffe; + zrf = 64'h0000000000000000; + ans = 64'h407001feffdffefe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb0ffff00000000; + y = 64'hbcaffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbc70fffefffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hc03ffffeff800000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbcaffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h405e1876cd43dfed; + y = 64'hb7efffffffffc006; + zrf = 64'h0000000000000000; + ans = 64'hb85e1876cd43a3c1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3fc01fffffff0000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37f46ac0cb227799; + y = 64'h41c5ef5245dd848c; + zrf = 64'h0000000000000000; + ans = 64'h39cbfd80a6baabfb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbcaa61d451370385; + y = 64'hbfd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3c8a61d451370385; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3f00004000001ff; + y = 64'hc3d00bfffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h47d00c04030001ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h088fdffdfffffffe; + y = 64'hbf3000007c000000; + zrf = 64'h0000000000000000; + ans = 64'h87cfdffef707f07d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfb0010007fffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc38011ffffffffff; + y = 64'h3a60000000220000; + zrf = 64'h0000000000000000; + ans = 64'hbdf012000022263e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402feffff7fffffe; + y = 64'hbfd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc00feffff7ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1ec36947a5606cc; + y = 64'hbfd0fffeffffffff; + zrf = 64'h0000000000000000; + ans = 64'h41cdf9fbfe921f92; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f0001fffffffbf; + y = 64'hc3cffeffffffffdf; + zrf = 64'h0000000000000000; + ans = 64'hc5cfff3ffdffff5d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc312de637a398fb0; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403b5ab30b28be12; + y = 64'hbfdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc02b5ab30b28be11; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc040000000007f; + y = 64'h3fd0f88932487143; + zrf = 64'h0000000000000000; + ans = 64'h3fa13c6b5711938f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hf8d6275431da5f5a; + y = 64'hc3f01fffffff0000; + zrf = 64'h0000000000000000; + ans = 64'h7cd653a2da3cb1a4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h434fffffff820000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3aa002007fffffff; + y = 64'hc1fe80c92278a049; + zrf = 64'h0000000000000000; + ans = 64'hbcae849a2fa3386e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4c20400000007ffe; + y = 64'hbfdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hcc10400000007ffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f778782e71a049; + y = 64'h41f0000000040004; + zrf = 64'h0000000000000000; + ans = 64'h43f778782e777e6d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f00001ffffffbf; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc1cfffffff87ffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcbcb96cd6ce0e7; + y = 64'hbdf0403fffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3dcc3b3456fdca1d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3810004000007fff; + y = 64'hbfe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hb800004000007fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb816b0e6a400c9f7; + y = 64'h41d04000000003ff; + zrf = 64'h0000000000000000; + ans = 64'hb9f70baa3e90d2c9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc2b6b180a7b11fce; + y = 64'h434ffffffffe7ffe; + zrf = 64'h0000000000000000; + ans = 64'hc616b180a7b00f7a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3ca00fffffffefff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcfffe00001fffe; + y = 64'h3ffffffffffffff9; + zrf = 64'h0000000000000000; + ans = 64'hbfdfffe00001fff7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h381ffffffff0007f; + y = 64'hbfe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hb80ffffffff00080; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3c508003ffffffff; + y = 64'hc9840007ffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc5e4a00d4001fffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3f500b2abbc6d5a; + y = 64'hc00000000200003f; + zrf = 64'h0000000000000000; + ans = 64'h440500b2ae5c8403; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc1fc003ffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h381f83ffffffffff; + y = 64'h401020007fffffff; + zrf = 64'h0000000000000000; + ans = 64'h383fc308fc1ffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc2d1fffffffffff8; + y = 64'hbfefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h42d1fffffffffff8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41c000000003fffd; + y = 64'hee8000020000007f; + zrf = 64'h0000000000000000; + ans = 64'hf05000020004007c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h44d1dac2a47ae323; + y = 64'hbf0ad596dbf9ffc8; + zrf = 64'h0000000000000000; + ans = 64'hc3edf1d4e2cf5d16; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h1dc0000200000400; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h802b02a4a7567581; + y = 64'h400ffbffffffff7f; + zrf = 64'h0000000000000000; + ans = 64'h804aff4452c18a45; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h801ffc000007ffff; + y = 64'hbfeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h001ffc000007fffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4061a0ee04ab4a49; + y = 64'h395f87fffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h39d15ed28819c7f2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h488e6af849a7c8cc; + y = 64'hc3c00000801ffffe; + zrf = 64'h0000000000000000; + ans = 64'hcc5e6af93d3c6106; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hf895b944b616e64d; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc08ffffff807ffff; + y = 64'h381fdfffffffdfff; + zrf = 64'h0000000000000000; + ans = 64'hb8bfdffff80fd7fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3e8ff000001fffff; + y = 64'hbff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbe8ff000001fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2740d36bf6e95244; + y = 64'hb8512e32d34343c0; + zrf = 64'h0000000000000000; + ans = 64'h9fa21137ff9a0629; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfd00040000003ff; + y = 64'hbfe601e4fe42b76a; + zrf = 64'h0000000000000000; + ans = 64'h3fc6023d05d6b5f4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hffe0000005fffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h34ed63d731a69782; + y = 64'h37e15e6928604d26; + zrf = 64'h0000000000000000; + ans = 64'h2cdfe7805e636848; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h002ffcfffffffffe; + y = 64'hbff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h802ffcffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41000000003e0000; + y = 64'hbaddffffffffff80; + zrf = 64'h0000000000000000; + ans = 64'hbbee000000743f7f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40a00000020001ff; + y = 64'hc340000000800001; + zrf = 64'h0000000000000000; + ans = 64'hc3f0000002800200; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc02ffeffbfffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe85c97c592f839; + y = 64'hb7f253013ebdb741; + zrf = 64'h0000000000000000; + ans = 64'h37ebe68cf6e766e6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3f00000083ffffe; + y = 64'hbfffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h44000000083ffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe7ffffbfffffff; + y = 64'hc04f7fff00000000; + zrf = 64'h0000000000000000; + ans = 64'h40479fff01000200; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc033a9b295fcb4d4; + y = 64'hc34fffffc00fffff; + zrf = 64'h0000000000000000; + ans = 64'h4393a9b26eb32481; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfa0040000000040; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7ee1b070553cb86; + y = 64'h43c02000000003ff; + zrf = 64'h0000000000000000; + ans = 64'hcbbe573d135e7aa1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbddfffffffffc03f; + y = 64'hbffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3defffffffffc03e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfdffff800020000; + y = 64'h40504000007fffff; + zrf = 64'h0000000000000000; + ans = 64'hc0403ffbf08103df; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h802ffb0000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcffffffffe07ff; + y = 64'h3fd5d55d6d4b65c1; + zrf = 64'h0000000000000000; + ans = 64'hbfb5d55d6d4a0ddf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc6efc00000001fff; + y = 64'hc000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h46ffc00000001fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc341000000007fff; + y = 64'hffe80007ffffffff; + zrf = 64'h0000000000000000; + ans = 64'h033980088000bffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc3d45a83d3e64a25; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbcaffc0000001fff; + y = 64'h37e000000003fffe; + zrf = 64'h0000000000000000; + ans = 64'hb49ffc0000081efb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffe00000003fffef; + y = 64'hc000000000000001; + zrf = 64'h0000000000000000; + ans = 64'h7fefffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7f0020000000fff; + y = 64'h4470000010000007; + zrf = 64'h0000000000000000; + ans = 64'hbc70020010021006; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc000000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d00000010003ff; + y = 64'h40400000007effff; + zrf = 64'h0000000000000000; + ans = 64'h42200000017f03ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h402200000001ffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7efffffbfffeffe; + y = 64'hb7efe00000001fff; + zrf = 64'h0000000000000000; + ans = 64'h2fefdfffc040100e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d09308769f3f51; + y = 64'hc00fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h43f09308769f3f51; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h5b18007fffffffff; + y = 64'h421000000004007e; + zrf = 64'h0000000000000000; + ans = 64'h5d380080000600dd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc00fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0140008000fffffe; + y = 64'hd2e0001ffffffffb; + zrf = 64'h0000000000000000; + ans = 64'h943000a0020001f8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hb6a4df75cc5a8ac6; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc0000000100002; + y = 64'hbfdffffff0ffffff; + zrf = 64'h0000000000000000; + ans = 64'hbfaffffff1200002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h9249d03728460383; + y = 64'hc00ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h1269d03728460382; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc80fffffeffffffe; + y = 64'h40346972210201a4; + zrf = 64'h0000000000000000; + ans = 64'hc854697216cd4892; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc00ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffef003fffffffff; + y = 64'hc3e000000007fffc; + zrf = 64'h0000000000000000; + ans = 64'h03df0040000f8018; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h402ffffdfefffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hef3fffe000007fff; + y = 64'hffd8000000000004; + zrf = 64'h0000000000000000; + ans = 64'h2f27ffe800006004; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7404000000007fe; + y = 64'hc010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h37604000000007fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00fbffffc000000; + y = 64'h37e1c5f1f14e88f4; + zrf = 64'h0000000000000000; + ans = 64'hb801a2660b332da3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h400fffffffffffff; + y = 64'hc1effffc00001000; + zrf = 64'h0000000000000000; + ans = 64'hc20ffffc00000fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hb81fbfffffffdffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc18000001fffeffe; + y = 64'hcd4fffafffffffff; + zrf = 64'h0000000000000000; + ans = 64'h4edfffb03fff3ffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe0c000001ffffff; + y = 64'hc010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h3e2c000002000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4030080000400000; + y = 64'h3feffffffffff7ef; + zrf = 64'h0000000000000000; + ans = 64'h40300800003ffbf6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f000000000004f; + y = 64'hb0d8d4e5d2e17fbc; + zrf = 64'h0000000000000000; + ans = 64'hb2d8d4e5d2e18036; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc3e4bafe2be6e7ab; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43c2000000000000; + y = 64'h1b9003ffdfffffff; + zrf = 64'h0000000000000000; + ans = 64'h1f62047fdbffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f0ffffffe000000; + y = 64'hc01fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbf3ffffffdffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h38000fffffdfffff; + y = 64'h3eb000000fffffdf; + zrf = 64'h0000000000000000; + ans = 64'h36c010000fefffde; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc01fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ff620e228517034; + y = 64'hd7b0007ffff00000; + zrf = 64'h0000000000000000; + ans = 64'hd7b621932f4c91dd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hb2d000010001fffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434002ffffffffff; + y = 64'hb80dffffff7ffffe; + zrf = 64'h0000000000000000; + ans = 64'hbb5e059fff7fe7fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01fffffffc00fff; + y = 64'hc01ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h404fffffffc00ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc01ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43402000003ffffe; + y = 64'h3fefbfffffffdfff; + zrf = 64'h0000000000000000; + ans = 64'h433fff80007edfbc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h40400000000103fe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc840000fffc00000; + y = 64'h8020800000100000; + zrf = 64'h0000000000000000; + ans = 64'h087080107fce0010; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hdc6fffe800000000; + y = 64'hc340000000000000; + zrf = 64'h0000000000000000; + ans = 64'h5fbfffe800000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h380ff7fffffffff7; + y = 64'h37e07fff7fffffff; + zrf = 64'h0000000000000000; + ans = 64'h30007bdf801ffffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc340000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc001fff8000000; + y = 64'hc7e000000fffffee; + zrf = 64'h0000000000000000; + ans = 64'hc7b002000801ffe5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc01f672422632eb4; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc025e14360f49046; + y = 64'h412fff0000000003; + zrf = 64'h0000000000000000; + ans = 64'hc165e09456d988a3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40efbffffffffff0; + y = 64'hc340000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc43fbffffffffff1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbffffffffff00006; + y = 64'h2ff00001ffffefff; + zrf = 64'h0000000000000000; + ans = 64'hb0000001fff7f001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc340000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hdb80000000008001; + y = 64'hc8000000001fffdf; + zrf = 64'h0000000000000000; + ans = 64'h6390000000207fe1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h43c0010ffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01a463c652ab793; + y = 64'hc05ffffffffeffff; + zrf = 64'h0000000000000000; + ans = 64'h408a463c6529e561; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43f000ffbfffffff; + y = 64'hbfb97cb2bcb99946; + zrf = 64'h0000000000000000; + ans = 64'hc3b97e4a21f299eb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc34fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc34b6bcc142a6f56; + y = 64'hc7e4a843ca846cd5; + zrf = 64'h0000000000000000; + ans = 64'h4b41b38f9341a0c3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h43ee59a2f1155c8b; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h9dd926fa6482fb5b; + y = 64'hc34ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h213926fa6482fb5a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fe000000000fbff; + y = 64'h39cd3b5aa5703bc0; + zrf = 64'h0000000000000000; + ans = 64'h39bd3b5aa5720825; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc34ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3c49fe3f310fdc0a; + y = 64'hbfd0000000000406; + zrf = 64'h0000000000000000; + ans = 64'hbc29fe3f310fe293; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h40307ff000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h9daffffffdffffef; + y = 64'hbf34c1a973f2b94f; + zrf = 64'h0000000000000000; + ans = 64'h1cf4c1a972a69ead; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4cadffffffffffbf; + y = 64'hffe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h8c9dffffffffffbf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fcffc0000003fff; + y = 64'hc3e0000083ffffff; + zrf = 64'h0000000000000000; + ans = 64'hc3bffc0107df3ffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hffe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fe0000000008fff; + y = 64'h802ffffff7fffff6; + zrf = 64'h0000000000000000; + ans = 64'h801ffffff8011ff3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h3f0773142edfbe27; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h29d000000403ffff; + y = 64'h3f80003f00000000; + zrf = 64'h0000000000000000; + ans = 64'h2960003f04040fcf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h38bfffefffdffffe; + y = 64'hffe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hf8afffefffdfffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47effffc00000001; + y = 64'hc7e953179168449a; + zrf = 64'h0000000000000000; + ans = 64'hcfe953146705526d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hffe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02fffc000007ffe; + y = 64'h37ffffffdffffffa; + zrf = 64'h0000000000000000; + ans = 64'hb83fffbfe000bff7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc1f000fffffffe00; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41c00fffffffbffe; + y = 64'hffefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h81c00fffffffbffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcebb873724572c; + y = 64'h43fffffffff007fe; + zrf = 64'h0000000000000000; + ans = 64'hc3debb8737150115; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hffefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3daffffc04000000; + y = 64'hc1dffbfffbffffff; + zrf = 64'h0000000000000000; + ans = 64'hbf9ffbfc007f807e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc7d001ffe0000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h5ce0010001ffffff; + y = 64'h559000000007fe00; + zrf = 64'h0000000000000000; + ans = 64'h728001000207fe7f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hffeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4d0ffffffffefff8; + y = 64'h434000000407ffff; + zrf = 64'h0000000000000000; + ans = 64'h5060000004077ffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hffeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ffdb267f5c69234; + y = 64'h3e3e492b0370990d; + zrf = 64'h0000000000000000; + ans = 64'h3e4c1b285e7fc086; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hb7f00083fffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe8ffbfff7ffffff; + y = 64'hb7efffffedffffff; + zrf = 64'h0000000000000000; + ans = 64'h368ffbffe6024003; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40401007fffffffe; + y = 64'hfff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h80401007fffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43d4000000200000; + y = 64'h3ca03fffffffff7f; + zrf = 64'h0000000000000000; + ans = 64'h4084500000207f5f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hfff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1cff80000040000; + y = 64'hc30007ffffffe000; + zrf = 64'h0000000000000000; + ans = 64'h44e003fe0001e108; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc6affffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h66ef3a141ea96df4; + y = 64'ha5fe000007ffffff; + zrf = 64'h0000000000000000; + ans = 64'hccfd4672e48d5c1b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403efff800000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3efff5fffffffff; + y = 64'h3e10aaf54bbf14f4; + zrf = 64'h0000000000000000; + ans = 64'hc210aaa1f4f49a38; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h815fffbffffffbfe; + y = 64'h3fc953950e8a2680; + zrf = 64'h0000000000000000; + ans = 64'h813953626760063f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hc0045abb4860cbf3; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb26ffffffffff3ff; + y = 64'h31f0083fffffffff; + zrf = 64'h0000000000000000; + ans = 64'ha470083ffffff9fb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41fffffffffc000f; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffe000000807ffff; + y = 64'hc7ffffffffffc00e; + zrf = 64'h0000000000000000; + ans = 64'h07f000000807e006; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc42fffffffff7eff; + y = 64'h400af1800bf02233; + zrf = 64'h0000000000000000; + ans = 64'hc44af1800befb594; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'hbfc307b45d013179; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43e67239f3caa98b; + y = 64'h4030100000007fff; + zrf = 64'h0000000000000000; + ans = 64'h442688ac2dbf27c5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc020003fefffffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43df800000000000; + y = 64'hc800000007fffffd; + zrf = 64'h0000000000000000; + ans = 64'hcbef80000fbffffa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0000000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc00003ffffe000; + y = 64'h3fc00020000ffffe; + zrf = 64'h0000000000000000; + ans = 64'h3f9000240017e002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hde308000000fffff; + y = 64'hbff03ffefffffffe; + zrf = 64'h0000000000000000; + ans = 64'h5e30c1fef8103ffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h33c9eac8840374c2; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfbf7fffffdfffff; + y = 64'hb15fffffff810000; + zrf = 64'h0000000000000000; + ans = 64'h312f7fffff62fc00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402e0f0ff2ae974a; + y = 64'hc010000007fbffff; + zrf = 64'h0000000000000000; + ans = 64'hc04e0f1001ae9b7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0029ab134ab9225a; + y = 64'hc1d2c16dd8a224a2; + zrf = 64'h0000000000000000; + ans = 64'h820e16c585c2b039; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h341ffc8000000000; + y = 64'hb87001fffffffe00; + zrf = 64'h0000000000000000; + ans = 64'haca0003fc7fffe00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402fbefffffffffe; + y = 64'hbfe00001fff7ffff; + zrf = 64'h0000000000000000; + ans = 64'hc01fbf03f7d0207c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401395a7515be3d9; + y = 64'h8010000000040007; + zrf = 64'h0000000000000000; + ans = 64'h803395a75160c94b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbffffffec0000000; + y = 64'hc000000000003eff; + zrf = 64'h0000000000000000; + ans = 64'h400ffffec0007dfe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h418f7ff7ffffffff; + y = 64'hb7f00000000000bf; + zrf = 64'h0000000000000000; + ans = 64'hb98f7ff800000177; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf6ffffffe000400; + y = 64'h402160aef0d05b5b; + zrf = 64'h0000000000000000; + ans = 64'hbfa160aeefba5298; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h1641ffffff7ffffe; + y = 64'h47e800000000001f; + zrf = 64'h0000000000000000; + ans = 64'h1e3affffff400020; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h411ffffeffffffff; + y = 64'h3e9ffc0000000020; + zrf = 64'h0000000000000000; + ans = 64'h3fcffbff00200020; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3fa0e39a0436d68; + y = 64'h3d3c9035c5b2e908; + zrf = 64'h0000000000000000; + ans = 64'hc14741de3814e038; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01fffffdefffffe; + y = 64'h0510000f7fffffff; + zrf = 64'h0000000000000000; + ans = 64'h8540000f6f7ff001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h1fc3fffffffff800; + y = 64'hc1f0000200020000; + zrf = 64'h0000000000000000; + ans = 64'ha1c40002800277ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41cfffff81ffffff; + y = 64'h402f0000000fffff; + zrf = 64'h0000000000000000; + ans = 64'h420effff85fffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4801ffffbfffffff; + y = 64'hc3c99366bccc8a8e; + zrf = 64'h0000000000000000; + ans = 64'hcbdcc5d32e1880ea; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h48000000004001ff; + y = 64'h41f331de979ac49e; + zrf = 64'h0000000000000000; + ans = 64'h4a0331de97e78e7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f0ffffffbfffff; + y = 64'h4890001ff0000000; + zrf = 64'h0000000000000000; + ans = 64'h50910021eebfff80; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7e000008001fffe; + y = 64'h001fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h881000008001fffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb8013a04700abd60; + y = 64'hffdfd80000000000; + zrf = 64'h0000000000000000; + ans = 64'h77f1247bea7eaff4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3eafeffff8000000; + y = 64'hca302000003fffff; + zrf = 64'h0000000000000000; + ans = 64'hc8f017effc37dffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h31fffc0000007ffe; + y = 64'h41229ed1840a7ed0; + zrf = 64'h0000000000000000; + ans = 64'h33329c7da9da47fb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hc0da7f18d03da9b8; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h00203effffffffff; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401fffc00000003f; + y = 64'hc11d4f929c6863da; + zrf = 64'h0000000000000000; + ans = 64'hc14d4f57fd432b42; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h400ffffffff8003e; + y = 64'h3ca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3cbffffffff8003e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3d0fffffbff7ffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d0003fffffffff; + y = 64'hbc1ffffefdfffffe; + zrf = 64'h0000000000000000; + ans = 64'hbe00003f7efdfbfd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1effff800001fff; + y = 64'h3ca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbe9ffff800002000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7e944135d63f2dd; + y = 64'h43ff7fffefffffff; + zrf = 64'h0000000000000000; + ans = 64'hcbf8df03034c5962; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca0f7fffffffffe; + y = 64'hb4bffffffff00000; + zrf = 64'h0000000000000000; + ans = 64'hb170f7fffff783fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f000000008001f; + y = 64'h30700007fc000000; + zrf = 64'h0000000000000000; + ans = 64'h32700007fc080023; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ffd6b6052240005; + y = 64'h3cafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3cbd6b6052240005; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc02000000001ff; + y = 64'hc00ffffeffffff7f; + zrf = 64'h0000000000000000; + ans = 64'h3fe01fff7f0001be; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h5580000000ffffee; + y = 64'h3ff509df8fb64af0; + zrf = 64'h0000000000000000; + ans = 64'h558509df9106e8d2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hbcae035f6e1c25b3; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43d3ffffff000000; + y = 64'h3caffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4093fffffeffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd533ffffffffffff; + y = 64'h3cafffffffbffbff; + zrf = 64'h0000000000000000; + ans = 64'hd1f3ffffffd7fd7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ecab8eca9bb4c17; + y = 64'hc0fd750edac542c0; + zrf = 64'h0000000000000000; + ans = 64'hbfd8995702b66277; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbefff8000000007f; + y = 64'h40bfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbfcff8000000007e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7f0008003ffffff; + y = 64'h3fd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hb7d0008003ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe156f8e2d95e99; + y = 64'h434ffffff8000ffe; + zrf = 64'h0000000000000000; + ans = 64'hc34156f8de83a90a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3c000000000001e; + y = 64'h7fde00003fffffff; + zrf = 64'h0000000000000000; + ans = 64'h83ae000040000037; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h80261e35bfb76142; + y = 64'h41cfffff0000fffe; + zrf = 64'h0000000000000000; + ans = 64'h82061e350ec66434; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41effffdfffffff6; + y = 64'h3fd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h41cffffdfffffff8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h190294f45fbe164e; + y = 64'hbf70000005fffffe; + zrf = 64'h0000000000000000; + ans = 64'h988294f466b5f1ef; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h43dfff8004000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1d1b3346b46a9eb; + y = 64'hbfc003fffffffff0; + zrf = 64'h0000000000000000; + ans = 64'h41a1b7a138617b84; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1ed5aa8b5beebe6; + y = 64'h3fdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc1dd5aa8b5beebe5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434202ad5699be09; + y = 64'h307fffffc0100000; + zrf = 64'h0000000000000000; + ans = 64'h33d202ad329d64b3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h480007ffdffffffe; + y = 64'h43eff08b0c1adb83; + zrf = 64'h0000000000000000; + ans = 64'h4c00004188dfe96b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2d70d3775ee02e3a; + y = 64'h3fdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h2d60d3775ee02e39; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfeed9443f12e7c3; + y = 64'hc03fffffe0000000; + zrf = 64'h0000000000000000; + ans = 64'h403ed9442039a384; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43404007fffffffe; + y = 64'hdeff4f3947dd05b5; + zrf = 64'h0000000000000000; + ans = 64'he24fcc85d4991db6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf9fdfffffffffef; + y = 64'h3fe3a38b61a3da9a; + zrf = 64'h0000000000000000; + ans = 64'hbf938fe7d64236b4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3debfffffffffff; + y = 64'h3fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc3cebfffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbcaffe0000000008; + y = 64'h3fd00008000000ff; + zrf = 64'h0000000000000000; + ans = 64'hbc8ffe0fff000205; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc05fffffefffefff; + y = 64'h3fe8010ee8a17cd1; + zrf = 64'h0000000000000000; + ans = 64'hc058010edca0e95b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3e1f29626b9ddd18; + y = 64'h30bfffdf80000000; + zrf = 64'h0000000000000000; + ans = 64'h2eef2942c595e7cc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ffffeffffffeffe; + y = 64'h3fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h3feffefffffff000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h66cefffffffffbff; + y = 64'hbee1c34e00ecb06b; + zrf = 64'h0000000000000000; + ans = 64'he5c1353390e548ae; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hba4dfffff8000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1d427301514e081; + y = 64'h3fd8800000000000; + zrf = 64'h0000000000000000; + ans = 64'hc1bedc01a047f7c5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd750100fffffffff; + y = 64'h3fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hd750100ffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffd00000000004fe; + y = 64'hc7cffffffefffff0; + zrf = 64'h0000000000000000; + ans = 64'h07afffffff0009ec; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbff0004000000001; + y = 64'h3cbfffeffffffdff; + zrf = 64'h0000000000000000; + ans = 64'hbcc00037ffdfff00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h404ffbfffffffffc; + y = 64'hc34ffff8003fffff; + zrf = 64'h0000000000000000; + ans = 64'hc3affbf8013ff7fb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fffffdfc0000000; + y = 64'h3feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3fffffdfbfffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43c000001dfffffe; + y = 64'h3c00800001000000; + zrf = 64'h0000000000000000; + ans = 64'h3fd080001ff00000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fefffffe2000000; + y = 64'h478fdfff80000000; + zrf = 64'h0000000000000000; + ans = 64'h478fdfff621e0078; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h00200003fff00000; + y = 64'hc8dffdfffffffff0; + zrf = 64'h0000000000000000; + ans = 64'h890ffe07ff6001ef; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3d1dbffffffffffe; + y = 64'h3ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3d1dbffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401e89aca33806c9; + y = 64'h381fc00007ffffff; + zrf = 64'h0000000000000000; + ans = 64'h384e4c99519401e4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403ffffffffffddf; + y = 64'h31ce00001fffffff; + zrf = 64'h0000000000000000; + ans = 64'h321e00001ffffe01; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc04ffc000000fffe; + y = 64'hbfa3f7525558148b; + zrf = 64'h0000000000000000; + ans = 64'h4003f4d36b0e0942; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434fffffffd00000; + y = 64'h3ff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h434fffffffd00002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43e0000000000082; + y = 64'h3db000003ffffeff; + zrf = 64'h0000000000000000; + ans = 64'h41a000003fffff82; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcfffff00000040; + y = 64'hfd561631baa43441; + zrf = 64'h0000000000000000; + ans = 64'h7d36163109f2a699; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402fffff0000007f; + y = 64'h3fffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h403fffff0000007f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfa0400010000000; + y = 64'hc3f00010000003ff; + zrf = 64'h0000000000000000; + ans = 64'h43a040105000140f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1600003fffffffd; + y = 64'h43fbffffffffbffe; + zrf = 64'h0000000000000000; + ans = 64'hc56c0006ffffbff8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h71deffffffbffffe; + y = 64'h4060003e00000000; + zrf = 64'h0000000000000000; + ans = 64'h724f00781fbfff06; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb0d000001fffffff; + y = 64'h3ffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hb0e000001ffffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37effffffefffff0; + y = 64'h4029001bf472f471; + zrf = 64'h0000000000000000; + ans = 64'h3829001bf3aaf385; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3814000000000fff; + y = 64'h37e0001fffeffffe; + zrf = 64'h0000000000000000; + ans = 64'h30040027ffec0ffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41a0000010000000; + y = 64'hf2a00020000007ff; + zrf = 64'h0000000000000000; + ans = 64'hf4500020100027ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1d004000ffffffe; + y = 64'h4000000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc1e004000ffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe9dfffffffffffd; + y = 64'h380afffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hb6b94ffffffffffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfb4717e76986740; + y = 64'h47ffeffffdffffff; + zrf = 64'h0000000000000000; + ans = 64'hc7c46745b6160324; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40e9f0ae10a42de6; + y = 64'hc1df000000008000; + zrf = 64'h0000000000000000; + ans = 64'hc2d92128a01f7439; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000002000001; + y = 64'h4000000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0020000002000003; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h320ff7fffffffc00; + y = 64'h7fe0001000000006; + zrf = 64'h0000000000000000; + ans = 64'h71fff81ff7fffc0c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h425fffffcfffffff; + y = 64'h41dffffbf7fffffe; + zrf = 64'h0000000000000000; + ans = 64'h444ffffbc800060a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4ff0fffffffdfffe; + y = 64'hd930000001000fff; + zrf = 64'h0000000000000000; + ans = 64'he9310000010e10fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe500000004001ff; + y = 64'h400fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbe700000004001fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fe0380000000000; + y = 64'h41affffffdfffc00; + zrf = 64'h0000000000000000; + ans = 64'h41a037fffefc7df9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00fffffc000007e; + y = 64'hc02ffffdfffffbff; + zrf = 64'h0000000000000000; + ans = 64'h404ffffdc000007e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fcfffffffffffff; + y = 64'hbcaffffffefffbff; + zrf = 64'h0000000000000000; + ans = 64'hbc8ffffffefffbfe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'he9500000003ff7ff; + y = 64'h400ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'he9700000003ff7fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37f74d312c9c12e6; + y = 64'hc59138b471d0b5f9; + zrf = 64'h0000000000000000; + ans = 64'hbd99149935ac4c00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h6b10000007ffffe0; + y = 64'hb84ffffffffdffde; + zrf = 64'h0000000000000000; + ans = 64'he370000007feffce; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f8fff00001fffff; + y = 64'hbfd00000201fffff; + zrf = 64'h0000000000000000; + ans = 64'hbf6fff00405dfdfd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h362fc7fffffffffe; + y = 64'h4010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h364fc7fffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h550c000000000003; + y = 64'hc03fffff7ffffeff; + zrf = 64'h0000000000000000; + ans = 64'hd55bffff8fffff22; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1dff8000000007f; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe0001ffffffeff; + y = 64'hbfe008000000ffff; + zrf = 64'h0000000000000000; + ans = 64'h3fd008201000ff00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h409dfffbffffffff; + y = 64'h4010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h40bdfffc00000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43ec69813b94d362; + y = 64'hbcaffffffaffffff; + zrf = 64'h0000000000000000; + ans = 64'hc0ac69813724572f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h475703a683fd6399; + y = 64'hd6d0000000003000; + zrf = 64'h0000000000000000; + ans = 64'hde3703a683fda8a3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h390ffffffffe0006; + y = 64'h479800000000007e; + zrf = 64'h0000000000000000; + ans = 64'h40b7fffffffe8083; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h381303276ef23657; + y = 64'hc4f0000000000efe; + zrf = 64'h0000000000000000; + ans = 64'hbd1303276ef24827; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fe00000000f0000; + y = 64'h55ffdffffffffffc; + zrf = 64'h0000000000000000; + ans = 64'h55efe000001de1fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h367000100001fffe; + y = 64'h4340000007ffffee; + zrf = 64'h0000000000000000; + ans = 64'h39c00010080207ed; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1fbfffffffdffff; + y = 64'h401ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc22bfffffffdfffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h407080fd3d82dc9d; + y = 64'hc3c00000fdffffff; + zrf = 64'h0000000000000000; + ans = 64'hc44080fe438290cc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca3b763df2216f1; + y = 64'hbd50000000003ffb; + zrf = 64'h0000000000000000; + ans = 64'hba03b763df2265c8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc120000003ffffe0; + y = 64'hc06000fffbffffff; + zrf = 64'h0000000000000000; + ans = 64'h4190010000003fde; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h001003fffffffffd; + y = 64'h4340000000000000; + zrf = 64'h0000000000000000; + ans = 64'h036003fffffffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3b10000000807ffe; + y = 64'hbe1fffff8000000f; + zrf = 64'h0000000000000000; + ans = 64'hb93fffff81010006; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ffb9699df82c260; + y = 64'h480ecff57c220532; + zrf = 64'h0000000000000000; + ans = 64'h481a907a18f76c15; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb10a400da0daec23; + y = 64'hc66ffbffbffffffe; + zrf = 64'h0000000000000000; + ans = 64'h378a3cc56aa6b583; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h77efff7fbfffffff; + y = 64'h4340000000000001; + zrf = 64'h0000000000000000; + ans = 64'h7b3fff7fc0000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hfc4ffffffffe00ff; + y = 64'hc80583e64223c02f; + zrf = 64'h0000000000000000; + ans = 64'h046583e64222689d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4035c0011a5256f5; + y = 64'h403bb950bcc2c81f; + zrf = 64'h0000000000000000; + ans = 64'h4082d7f5d4e4d1ba; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfd000800000007f; + y = 64'h463ffff7fffbffff; + zrf = 64'h0000000000000000; + ans = 64'hc620007bffde006e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4026684586bcc03f; + y = 64'h434fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h4386684586bcc03f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fd1f7ffffffffff; + y = 64'hc01000001dffffff; + zrf = 64'h0000000000000000; + ans = 64'hbff1f80021b0fffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb06fffffffffdeff; + y = 64'hbcafdfffff7fffff; + zrf = 64'h0000000000000000; + ans = 64'h2d2fdfffff7fdf20; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfd0040000000007; + y = 64'h41f00000000009ff; + zrf = 64'h0000000000000000; + ans = 64'hc1d0040000000a08; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1d02cdfc07b7411; + y = 64'h434ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc5302cdfc07b740f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fd3ffdffffffffe; + y = 64'hc1f001fdffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc1d4025d7c03fffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffefffffffe0000e; + y = 64'h3c6db11b9ddefb5e; + zrf = 64'h0000000000000000; + ans = 64'hfc6db11b9dc14a4f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h391bfffffffffff6; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc010000fffffbffe; + y = 64'h7fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h8000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0000ffffdffffff; + y = 64'h41fdeffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc20e0deffc41fffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h9ffa2f3964887701; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2e0fefdfffffffff; + y = 64'h4030000020000040; + zrf = 64'h0000000000000000; + ans = 64'h2e4fefe03fdfc07f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf743e9d43f80c40; + y = 64'h7fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hff643e9d43f80c41; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e00007f0000000; + y = 64'h21bffffffff01000; + zrf = 64'h0000000000000000; + ans = 64'ha3b00007eff807fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffd0000017fffffe; + y = 64'hc1f000ffffffc000; + zrf = 64'h0000000000000000; + ans = 64'h01d0010018013ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e0000080010000; + y = 64'h079fffffeeffffff; + zrf = 64'h0000000000000000; + ans = 64'h899000007780ffbb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h1feffffffffc003e; + y = 64'h7fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h5feffffffffc003e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3efefffffffdfff; + y = 64'h3f90100000000004; + zrf = 64'h0000000000000000; + ans = 64'hc39007f7ffffeff3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3effffff7e00000; + y = 64'h3d9ffffdfffff7ff; + zrf = 64'h0000000000000000; + ans = 64'hc19ffffdf7dff881; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1f00d875c7ed339; + y = 64'h55400003fffffffc; + zrf = 64'h0000000000000000; + ans = 64'hd7400d8b5fe0aa54; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401fffdff7ffffff; + y = 64'h7feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h001fffdff7fffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43c0000803ffffff; + y = 64'h3fcfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h43a0000803ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbee00000000007f0; + y = 64'h4030453834d7a591; + zrf = 64'h0000000000000000; + ans = 64'hbf20453834d7ada3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc0001fffffff00; + y = 64'hc170000380000000; + zrf = 64'h0000000000000000; + ans = 64'h414000238006ff00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe0077fffffffff; + y = 64'h7ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hffe0077fffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h8a9fffffffffffff; + y = 64'h7fe0000000001080; + zrf = 64'h0000000000000000; + ans = 64'hca9000000000107f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe7aba21defbaa50; + y = 64'hfc3fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h7acaba21defbaa50; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f0000ffffdffff; + y = 64'h3fbfff0000000006; + zrf = 64'h0000000000000000; + ans = 64'h47bfff1ffefc0025; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf5ffff7fe000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h38f0100000007ffe; + y = 64'h41e0000001010000; + zrf = 64'h0000000000000000; + ans = 64'h3ae01000010280ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ffffffffffffff2; + y = 64'h3faffff8000007ff; + zrf = 64'h0000000000000000; + ans = 64'h3fbffff8000007f2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0afffffbffffdfe; + y = 64'h3fc07ffdffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc0807ffddf0002f5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h093fff7f7ffffffe; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb8ed736b185958; + y = 64'h43f07dac22ee32d4; + zrf = 64'h0000000000000000; + ans = 64'h43b9b13eafd17761; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4315932d1fc6bca5; + y = 64'hbfe00000047ffffe; + zrf = 64'h0000000000000000; + ans = 64'hc305932d25d82153; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfdfffff1fffffff; + y = 64'hc00aab60f8ca27b4; + zrf = 64'h0000000000000000; + ans = 64'h3ffaab603e1a80e6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3800003fdfffffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f9dcc0dc84790c; + y = 64'hbfd001ffffffffc0; + zrf = 64'h0000000000000000; + ans = 64'hc7d9dffc74a00933; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hae6fff800000007e; + y = 64'hc08787cf0c729bb6; + zrf = 64'h0000000000000000; + ans = 64'h2f078770ed366a49; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01000001000000e; + y = 64'hbdbfffffdfffdffe; + zrf = 64'h0000000000000000; + ans = 64'h3ddfffffffffdffa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h001fffffefff0000; + y = 64'h8000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0fffffffeffffee; + y = 64'h55139bb9349e058c; + zrf = 64'h0000000000000000; + ans = 64'hd6239bb9340127b7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7ef7fffffe00000; + y = 64'hc3e1db16103a3e46; + zrf = 64'h0000000000000000; + ans = 64'h3be193a9b7e77a37; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbca000000008007e; + y = 64'h3810000000000880; + zrf = 64'h0000000000000000; + ans = 64'hb4c00000000808fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h406ff7fffff7ffff; + y = 64'hc03000020001ffff; + zrf = 64'h0000000000000000; + ans = 64'hc0aff803fefbfefc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41fffffc0fffffff; + y = 64'hbff125048d9f0538; + zrf = 64'h0000000000000000; + ans = 64'hc20125027190f5ca; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40101ffbffffffff; + y = 64'h4030000001fffbff; + zrf = 64'h0000000000000000; + ans = 64'h40501ffc0203fb76; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc71922783e2606; + y = 64'h5ebfffffffffb7ff; + zrf = 64'h0000000000000000; + ans = 64'h5e971922783df20d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4805e01bec624433; + y = 64'hbebfffe003fffffe; + zrf = 64'h0000000000000000; + ans = 64'hc6d5e0060f025b4c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe000fffdffffff; + y = 64'hb5ffffc007fffffe; + zrf = 64'h0000000000000000; + ans = 64'h35f000e0000043fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h5b70007f80000000; + y = 64'hc3cfffffffeff7ff; + zrf = 64'h0000000000000000; + ans = 64'hdf50007f7ff7fbbf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41ffdbaf18ce06bd; + y = 64'h8010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h821fdbaf18ce06bd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0dfff77ffffffff; + y = 64'hbcff8b0a27d3ea94; + zrf = 64'h0000000000000000; + ans = 64'h3def8a8418e8c14f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40785ec8540ee022; + y = 64'h402fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h40b85ec8540ee022; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc03fffdfff7ffffe; + y = 64'h3ffffffbfffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc04fffdbff84000c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3fbba85b3184d07; + y = 64'h8010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h041bba85b3184d09; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4a3ccc699c427a3d; + y = 64'h4000002003ffffff; + zrf = 64'h0000000000000000; + ans = 64'h4a4ccca33c48cd28; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4c3002003fffffff; + y = 64'h40dffffff0ffffff; + zrf = 64'h0000000000000000; + ans = 64'h4d200200387f0fe1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd5803ffffffffffc; + y = 64'h400fffffffffdfff; + zrf = 64'h0000000000000000; + ans = 64'hd5a03fffffffefbb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hc80fffffffffffd6; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc346e93e17d2b781; + y = 64'h415fffffffa00000; + zrf = 64'h0000000000000000; + ans = 64'hc4b6e93e178dfbc6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0e1000000080000; + y = 64'h801ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h011100000007ffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb01fffff8003ffff; + y = 64'h41e1107888e2300a; + zrf = 64'h0000000000000000; + ans = 64'hb211107844a26ff4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fefffffffff000e; + y = 64'hc034a2b24bab636b; + zrf = 64'h0000000000000000; + ans = 64'hc034a2b24baabe5e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h39e003ffffffffbf; + y = 64'h3e504000000001ff; + zrf = 64'h0000000000000000; + ans = 64'h38404410000001be; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fa1ffff7fffffff; + y = 64'hbca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbc51ffff7fffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1cffffffe000003; + y = 64'hbd1eb76580b25d59; + zrf = 64'h0000000000000000; + ans = 64'h3efeb7657ec6e704; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc000200003fffe; + y = 64'hbb70007fbffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3b40009fc103801c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401f003fffffffff; + y = 64'hbfe8d71166319ab9; + zrf = 64'h0000000000000000; + ans = 64'hc018108a8922da45; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3d6fde0000000000; + y = 64'hbca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hba1fde0000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403c2c5a3b9bb39e; + y = 64'hb7efffdffffff000; + zrf = 64'h0000000000000000; + ans = 64'hb83c2c3e0f4169ec; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fbffffff0000007; + y = 64'hc807dfffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc7d7dffff4100004; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1f007ffffffffff; + y = 64'h41efffffffbffff6; + zrf = 64'h0000000000000000; + ans = 64'hc3f007ffffdfeff9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40205fffffffffff; + y = 64'hbcafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbce05ffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f0220000000000; + y = 64'hc3afffffbf800000; + zrf = 64'h0000000000000000; + ans = 64'hc5b021ffdf7b7800; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb000001fffffc0; + y = 64'h41d0804000000000; + zrf = 64'h0000000000000000; + ans = 64'h4190804021007fbe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1d00010007ffffe; + y = 64'h0bd0200ffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h8db020202091007b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47203fffffffff7e; + y = 64'hbcaffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc3e03fffffffff7c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fba29d8ba0da6e3; + y = 64'h894fff7fc0000000; + zrf = 64'h0000000000000000; + ans = 64'h891a296fde570d38; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37eee003376d4ca7; + y = 64'hbd381ffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hb53746e26cc966c7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h3ca0000400000100; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc357b53537b96da5; + y = 64'hbfd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h4337b53537b96da5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3bc00000fffff000; + y = 64'hb81000001ffffff7; + zrf = 64'h0000000000000000; + ans = 64'hb3e000011ffff1f6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fbfff3fffffffff; + y = 64'hb7fc000000000006; + zrf = 64'h0000000000000000; + ans = 64'hb7cbff5800000005; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fd12a08d1862ac2; + y = 64'he6000000000003f6; + zrf = 64'h0000000000000000; + ans = 64'he5e12a08d1862f01; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3caffdfdffffffff; + y = 64'hbfd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbc8ffdfe00000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc50c00000003ffff; + y = 64'h480004003fffffff; + zrf = 64'h0000000000000000; + ans = 64'hcd1c0700700400fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1effffbffffbfff; + y = 64'h39a0007000000000; + zrf = 64'h0000000000000000; + ans = 64'hbba0006dfff1dffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02ffffff807fffe; + y = 64'hbff7fe641162987a; + zrf = 64'h0000000000000000; + ans = 64'h4037fe640b68ff0e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h400fffff00400000; + y = 64'hbfdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbfffffff003fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f3007ffc0000000; + y = 64'h434fffffdffffffa; + zrf = 64'h0000000000000000; + ans = 64'h429007ffaff8003d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401fffffffffffff; + y = 64'hffebff8000000000; + zrf = 64'h0000000000000000; + ans = 64'h801bff7fffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3feff000003fffff; + y = 64'h4db0000ffffffffa; + zrf = 64'h0000000000000000; + ans = 64'h4daff01ff0400034; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbff3fffffeffffff; + y = 64'hbfdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3fe3fffffefffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d400000000000f; + y = 64'h406ec0bcf0b3df6c; + zrf = 64'h0000000000000000; + ans = 64'h4253387616706bb2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0d5f7fefffffffff; + y = 64'h47ec8d501c4f76b7; + zrf = 64'h0000000000000000; + ans = 64'h155c1b0c95362ab4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4440f00000000000; + y = 64'hbd8c00ffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc1dda50efffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37ebffffffdffffe; + y = 64'hbfe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hb7dbffffffdffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37efe7ffffffffff; + y = 64'h44040e69405ca472; + zrf = 64'h0000000000000000; + ans = 64'h3c03ff5e716c5ef7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43f25bca4820614e; + y = 64'hb7e4000000000006; + zrf = 64'h0000000000000000; + ans = 64'hbbe6f2bcda2879a8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fd0000000000004; + y = 64'h318c8fccd5b02d23; + zrf = 64'h0000000000000000; + ans = 64'h316c8fccd5b02d2b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7eff77bf2b59c3c; + y = 64'hbfe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h47dff77bf2b59c3e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4000000210000000; + y = 64'h43c00103ffffffff; + zrf = 64'h0000000000000000; + ans = 64'h43d00106102183ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401100007fffffff; + y = 64'hc3dffffc0000003f; + zrf = 64'h0000000000000000; + ans = 64'hc400fffe5ffff020; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41ffffffff9fffff; + y = 64'hc060000003ffffef; + zrf = 64'h0000000000000000; + ans = 64'hc270000003cfffee; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hbfefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00d37e1e0c4506a; + y = 64'h3f8ffffffff801ff; + zrf = 64'h0000000000000000; + ans = 64'hbfad37e1e0bd0444; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f240001ffffffff; + y = 64'hc1cff8000003fffe; + zrf = 64'h0000000000000000; + ans = 64'hc103fb01ff827ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434000000ff7ffff; + y = 64'hbfdffffbdfffffff; + zrf = 64'h0000000000000000; + ans = 64'hc32ffffbffeffbdf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h002e000fffffffff; + y = 64'hbfeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h802e000ffffffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc000000fefffff; + y = 64'h3fb54faffd79cc78; + zrf = 64'h0000000000000000; + ans = 64'hbf854fb012b42cc4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h380c3f72cc3dec98; + y = 64'hc3fffffffbffffff; + zrf = 64'h0000000000000000; + ans = 64'hbc1c3f72c8b5fe3d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3caebfd21432f7f8; + y = 64'hbff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbcaebfd21432f7f8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h802fffdffeffffff; + y = 64'h4047cb0f60814953; + zrf = 64'h0000000000000000; + ans = 64'h8087caf794b39055; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43e1001000000000; + y = 64'h37f20000003fffff; + zrf = 64'h0000000000000000; + ans = 64'h3be320120044003f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb5bffffffc1fffff; + y = 64'hbff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h35bffffffc200001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h45cfdffffffbffff; + y = 64'h37e00000007fbffe; + zrf = 64'h0000000000000000; + ans = 64'h3dbfe00000fa807c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02fffffffffffe2; + y = 64'h972f800000003fff; + zrf = 64'h0000000000000000; + ans = 64'h176f800000003fe2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4800003fffbffffe; + y = 64'h41b000fffffffffb; + zrf = 64'h0000000000000000; + ans = 64'h49c0014003bffbf9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fee4b562439ed33; + y = 64'hbfffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hffefffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h480ffffffc000020; + y = 64'h4094000000001ffe; + zrf = 64'h0000000000000000; + ans = 64'h48b3fffffd802012; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb8e0000003fbffff; + y = 64'hc503f4d44f4bf888; + zrf = 64'h0000000000000000; + ans = 64'h3df3f4d454443066; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h381ffffdfffdfffe; + y = 64'h41e2c2cc4e128c3c; + zrf = 64'h0000000000000000; + ans = 64'h3a12c2cb21e49b2d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h002d08b65157014a; + y = 64'hbffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h803d08b651570148; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fd00fffffff7ffe; + y = 64'hbfe2000100000000; + zrf = 64'h0000000000000000; + ans = 64'hffc2120100ff6ffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf090b74581d0095; + y = 64'hc340101fffffffff; + zrf = 64'h0000000000000000; + ans = 64'h425924b1e35dcdcf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02fbffffff7ffff; + y = 64'h41f35be73c03f148; + zrf = 64'h0000000000000000; + ans = 64'hc233352f6d87126b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3e78df1020787b47; + y = 64'hc000000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbe88df1020787b47; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fcffffff8000ffe; + y = 64'hdb60037fffffffff; + zrf = 64'h0000000000000000; + ans = 64'hdb40037ffbff27ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00fffeff7ffffff; + y = 64'h366ffffffeffffbe; + zrf = 64'h0000000000000000; + ans = 64'hb68fffeff700003d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb9960804588bf278; + y = 64'hc0dfffefffff0000; + zrf = 64'h0000000000000000; + ans = 64'h3a8607f9548915f2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f3ffffc001fffff; + y = 64'hc000000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbf4ffffc00200000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h182fffffffffffc0; + y = 64'h3fe00000001fffff; + zrf = 64'h0000000000000000; + ans = 64'h18200000001fffdf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f10000000000400; + y = 64'h47fffffffdffffff; + zrf = 64'h0000000000000000; + ans = 64'h471ffffffe0007ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1c40000000003ff; + y = 64'hbc10000000000ffe; + zrf = 64'h0000000000000000; + ans = 64'h3de40000000017fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f300ffff7fffffe; + y = 64'hc00fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbf500ffff7fffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb800000200000400; + y = 64'h2f9fffffffdffffd; + zrf = 64'h0000000000000000; + ans = 64'ha7b00001fff003fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf50000000100fff; + y = 64'hc865677a07e9dbac; + zrf = 64'h0000000000000000; + ans = 64'h47c5677a07ff588d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7f000000000013e; + y = 64'h3ff0000000002010; + zrf = 64'h0000000000000000; + ans = 64'hb7f000000000214e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4800203fffffffff; + y = 64'hc00ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc820203ffffffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403bfffbffffffff; + y = 64'hbfc00000ffffff00; + zrf = 64'h0000000000000000; + ans = 64'hc00bfffdbfffbe3f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc340002000004000; + y = 64'hc0db3367e0423019; + zrf = 64'h0000000000000000; + ans = 64'h442b339e47125d6b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc037ff8000000000; + y = 64'hc010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h4057ff8000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h42c0010000080000; + y = 64'h3cd45a0cb459b7b5; + zrf = 64'h0000000000000000; + ans = 64'h3fa45b52552f2a57; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffdffc0080000000; + y = 64'h3fefffffff7fe000; + zrf = 64'h0000000000000000; + ans = 64'hffdffc007f7ff001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d0000000000060; + y = 64'h3e3a83b1571e2cf8; + zrf = 64'h0000000000000000; + ans = 64'h401a83b1571e2d98; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffe00000000002ff; + y = 64'hc010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7e7e7cc88b1f290; + y = 64'hc3f2ac81d4039f01; + zrf = 64'h0000000000000000; + ans = 64'h3bebe683ea2b7707; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ef1fffdffffffff; + y = 64'h3f8ff7ffffffdfff; + zrf = 64'h0000000000000000; + ans = 64'h7e91fb7e007fedff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc06fefffffe00000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4801000000000fff; + y = 64'hc01fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc831000000000ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4f60000801ffffff; + y = 64'h41c07fe000000000; + zrf = 64'h0000000000000000; + ans = 64'h51307fe841fffbff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40faeed5df2a2899; + y = 64'h400000ffffefffff; + zrf = 64'h0000000000000000; + ans = 64'h410af084cc6d2c64; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f90f3fcc527003; + y = 64'hc7e01fffbfffffff; + zrf = 64'h0000000000000000; + ans = 64'hcfe9415de7ae15b0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403fffe000000006; + y = 64'hc01ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc06fffe000000004; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe0000020003ffe; + y = 64'hbc1ffddfffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3c0ffde03ffc3ff3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h380ff7ffffffefff; + y = 64'hd00fff00000000fe; + zrf = 64'h0000000000000000; + ans = 64'hc82ff7003ffff0fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h380ffffffffc007e; + y = 64'hc340000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbb5ffffffffc007e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2310800003ffffff; + y = 64'h661000ffffefffff; + zrf = 64'h0000000000000000; + ans = 64'h4930810803efbffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4340004000020000; + y = 64'h44c00000008001ff; + zrf = 64'h0000000000000000; + ans = 64'h4810004000820400; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f3fffe00001ffff; + y = 64'hc02008000000ffff; + zrf = 64'h0000000000000000; + ans = 64'hbf7007eff802007d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1ffffffbfefffff; + y = 64'hc340000000000001; + zrf = 64'h0000000000000000; + ans = 64'h454fffffbff00001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d000400000003f; + y = 64'hc1dfbfffe0000000; + zrf = 64'h0000000000000000; + ans = 64'hc3bfc07edfff807d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc000020000001f; + y = 64'hbfa00800000007fe; + zrf = 64'h0000000000000000; + ans = 64'h3f7008020100081e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hcd5fffffffffe1ff; + y = 64'h4dbd2735bcda9589; + zrf = 64'h0000000000000000; + ans = 64'hdb2d2735bcda7a33; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3effffff7ffefff; + y = 64'hc34fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h474ffffff7ffefff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f98000000007fff; + y = 64'h41d3af2126b9069b; + zrf = 64'h0000000000000000; + ans = 64'h417d86b1ba162761; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc0000fffdfffff; + y = 64'hc017d02e9840c356; + zrf = 64'h0000000000000000; + ans = 64'hbfe7d046683fbb38; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc55048c1a2236a7e; + y = 64'hbfbffe0001ffffff; + zrf = 64'h0000000000000000; + ans = 64'h452047bd170dd461; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7ffc0000000003f; + y = 64'hc34ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4b5fc0000000003e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc002d09cd8fe7e49; + y = 64'hc27ff7fbffffffff; + zrf = 64'h0000000000000000; + ans = 64'h4292cbe657b4a38a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h404fff7fffffff7f; + y = 64'h48ab7e2aad4ec686; + zrf = 64'h0000000000000000; + ans = 64'h490b7dbcb4a410dd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3cdbf00000000000; + y = 64'h43dffffddffffffe; + zrf = 64'h0000000000000000; + ans = 64'h40cbeffe250fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc35bffffffefffff; + y = 64'hffe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h034bffffffefffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3fffff5fffffffe; + y = 64'h37e910297c4564f4; + zrf = 64'h0000000000000000; + ans = 64'hbbf91021a7386e1c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h995000801fffffff; + y = 64'hbfc600a072f928fd; + zrf = 64'h0000000000000000; + ans = 64'h19260150a3fe01ab; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7fc95c1023be015; + y = 64'h38000001fffff7ff; + zrf = 64'h0000000000000000; + ans = 64'hc00c95c494f3f20f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h1250000fbffffffe; + y = 64'hffe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hd240000fbfffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f80000003ffffef; + y = 64'h40cffffffffdfffe; + zrf = 64'h0000000000000000; + ans = 64'h4060000003feffee; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4806199091f39a3e; + y = 64'h3a54f1e8abc46a10; + zrf = 64'h0000000000000000; + ans = 64'h426cee1727f7af20; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401fe00000000000; + y = 64'hc3cab4ec3fa6d4eb; + zrf = 64'h0000000000000000; + ans = 64'hc3fa9a3753672e16; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hffefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h38a314b3956389c2; + y = 64'h41e4554078c1c962; + zrf = 64'h0000000000000000; + ans = 64'h3a983f8b5796bf4d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402f800000001ffe; + y = 64'h449000ffffe00000; + zrf = 64'h0000000000000000; + ans = 64'h44cf81f7ffc12000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1cffffe001ffffe; + y = 64'hffeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h01cffffe001ffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3c00400000000fff; + y = 64'h41dfffffbff7ffff; + zrf = 64'h0000000000000000; + ans = 64'h3df03fffdf7bffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hcbc0001ff7fffffe; + y = 64'hd1c2000000001fff; + zrf = 64'h0000000000000000; + ans = 64'h5d920023f7001ffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcffc1fffffffff; + y = 64'hfff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7fcffc1fffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fafffffffffff0f; + y = 64'hc3dffe0400000000; + zrf = 64'h0000000000000000; + ans = 64'hc39ffe03ffffff0f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02fffffffffffdd; + y = 64'h41ffffffffe7ffff; + zrf = 64'h0000000000000000; + ans = 64'hc23fffffffe7ffdc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1c0000003ffffc0; + y = 64'hc00fbfffbffffffe; + zrf = 64'h0000000000000000; + ans = 64'h41dfbfffc7efff70; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41e189ea1a6fff97; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf00000000017fff; + y = 64'h402000000017ffff; + zrf = 64'h0000000000000000; + ans = 64'hbf30000000197ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1cffffffffffffe; + y = 64'hc7f03fffff7ffffe; + zrf = 64'h0000000000000000; + ans = 64'h49d03fffff7ffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43d4000000000020; + y = 64'hcb9000007ffeffff; + zrf = 64'h0000000000000000; + ans = 64'hcf7400009ffec01e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fd4000000000040; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41deeffffffffffe; + y = 64'h408096dfffe807a5; + zrf = 64'h0000000000000000; + ans = 64'h427009dd8fe8d363; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd40fffffffefefff; + y = 64'h4020000000001ffb; + zrf = 64'h0000000000000000; + ans = 64'hd43ffffffff02ff4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h285fffffb0000000; + y = 64'hbcc07ffffbffffff; + zrf = 64'h0000000000000000; + ans = 64'ha5307fffd2c00009; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41dba3c9edc2d856; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0231e85f8945a25; + y = 64'hbf9ffffffff04000; + zrf = 64'h0000000000000000; + ans = 64'h3fd31e85f88af120; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ff0ee9046c9330f; + y = 64'h8479e1e79766e02b; + zrf = 64'h0000000000000000; + ans = 64'h847b63d14ff91acb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3800000000008002; + y = 64'hc34fff800ffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbb5fff801000fffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbff00010001ffffe; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h324824baaf05e670; + y = 64'hc02f1d6d391cd812; + zrf = 64'h0000000000000000; + ans = 64'hb28779c88aef6872; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3ce25f5756217be; + y = 64'hbeb8de9767c61bc6; + zrf = 64'h0000000000000000; + ans = 64'h42976e2e13caff56; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbec0fffffffffffd; + y = 64'hbff000fffbfffffe; + zrf = 64'h0000000000000000; + ans = 64'h3ec1010ffbbffffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h509ffff800000040; + y = 64'hbf800002007fffff; + zrf = 64'h0000000000000000; + ans = 64'hd02ffffc00fefffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h408fffffffffffff; + y = 64'h5f8fbcc496d14669; + zrf = 64'h0000000000000000; + ans = 64'h602fbcc496d14669; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4010002000000006; + y = 64'h5e9ffc001fffffff; + zrf = 64'h0000000000000000; + ans = 64'h5ebffc401800400b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3987fed51dcf1c87; + y = 64'hbfb5383498e99ecc; + zrf = 64'h0000000000000000; + ans = 64'hb94fd2c2829010f7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd2f805130a8c11df; + y = 64'h43effffdfdfffffe; + zrf = 64'h0000000000000000; + ans = 64'hd6f8051188ba9004; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha66000000008ffff; + y = 64'hb5f63e97ef44abfa; + zrf = 64'h0000000000000000; + ans = 64'h1c663e97ef512f2f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffd08000fffffffe; + y = 64'hc2e50f943cb3415f; + zrf = 64'h0000000000000000; + ans = 64'h02c5b8122f921f33; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca03ffbffffffff; + y = 64'hcd52199e0ff31aad; + zrf = 64'h0000000000000000; + ans = 64'hca02620001cb6319; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402ffffffe07ffff; + y = 64'h0010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h004ffffffe07ffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h361ffffffffffdfb; + y = 64'h40451c57126e71b1; + zrf = 64'h0000000000000000; + ans = 64'h36751c57126e705c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe2fefffffffffff; + y = 64'hb81ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h365feffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc80fffffffbfff7f; + y = 64'h4b2fffff800001ff; + zrf = 64'h0000000000000000; + ans = 64'hd34fffff7fc0017f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hba7dffffffffdfff; + y = 64'h40138c01af69c4ee; + zrf = 64'h0000000000000000; + ans = 64'hbaa2534194731512; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3a90000001020000; + y = 64'hc1cffffffffc000f; + zrf = 64'h0000000000000000; + ans = 64'hbc70000001000007; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4f1fffbfffe00000; + y = 64'hbcd02000000007ff; + zrf = 64'h0000000000000000; + ans = 64'hcc001fdfbfefe7fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe0007ffffffeff; + y = 64'h001fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h8010007ffffffefe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4047ec41418542a9; + y = 64'hbca07e0000000000; + zrf = 64'h0000000000000000; + ans = 64'hbcf8a8a5c3693c15; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca0200000000100; + y = 64'hc1c00000000ffffd; + zrf = 64'h0000000000000000; + ans = 64'hbe702000001020fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h422007ffffffffff; + y = 64'h43dfffff00000003; + zrf = 64'h0000000000000000; + ans = 64'h461007ff7fc00001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40dfe000003fffff; + y = 64'h001ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h010fe000003ffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02d53f3e871e98f; + y = 64'h402000000003f7fe; + zrf = 64'h0000000000000000; + ans = 64'hc05d53f3e8792fde; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f0000000007bfe; + y = 64'h43c07fff80000000; + zrf = 64'h0000000000000000; + ans = 64'h45c07fff80007fde; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'habfff80000ffffff; + y = 64'h3ca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'ha8aff80000ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h802fffffffffffbf; + y = 64'h400ffff7ffffff7f; + zrf = 64'h0000000000000000; + ans = 64'h804ffff7ffffff3e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe70000077ffffff; + y = 64'hc1efffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h4070000077ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1900000000ffff6; + y = 64'hc0100000207fffff; + zrf = 64'h0000000000000000; + ans = 64'h41b00000208ffff6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ff00000007ffffc; + y = 64'h3ca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h3ca00000007ffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd3ad0f91e5202b24; + y = 64'h948ff7fffffffdfe; + zrf = 64'h0000000000000000; + ans = 64'h284d084e00a6e147; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434dfe591d17f337; + y = 64'h3801fffffffefffe; + zrf = 64'h0000000000000000; + ans = 64'h3b60df12205c88db; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41e3fffffbfffffe; + y = 64'hc3e20000000007ff; + zrf = 64'h0000000000000000; + ans = 64'hc5d67ffffb8009fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3549284c3d5f3c48; + y = 64'h3cafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3209284c3d5f3c48; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbc1fffdbfffffffe; + y = 64'hffe8492804aa9910; + zrf = 64'h0000000000000000; + ans = 64'h7c18490cb25d93cf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h378fff7fffbfffff; + y = 64'hc1f0000000200007; + zrf = 64'h0000000000000000; + ans = 64'hb98fff7fffffff0c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fcffffffeffffe0; + y = 64'h41300023fffffffe; + zrf = 64'h0000000000000000; + ans = 64'h41100023ff7ffece; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41e1ffffbffffffe; + y = 64'h3caffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3ea1ffffbffffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1ede88c6af5824c; + y = 64'h3fdfffff82000000; + zrf = 64'h0000000000000000; + ans = 64'hc1dde88bf531d966; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb81fc00000003ffe; + y = 64'h9b07b63efeb2a5b1; + zrf = 64'h0000000000000000; + ans = 64'h133786d280b56fd1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h03909fc2a7ba5daf; + y = 64'h3fd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h03709fc2a7ba5daf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41cfffbfffffff00; + y = 64'hbfc454db14a7766b; + zrf = 64'h0000000000000000; + ans = 64'hc1a454b26af14c79; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2bd2309c71f3442c; + y = 64'h43d0000000000009; + zrf = 64'h0000000000000000; + ans = 64'h2fb2309c71f34437; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb81fffffff080000; + y = 64'he6a07fffffff7fff; + zrf = 64'h0000000000000000; + ans = 64'h5ed07fffff7fa000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc05622dd78e30c7a; + y = 64'h3fd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc03622dd78e30c7b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h19ba5c173102efbd; + y = 64'hc56000000047fffe; + zrf = 64'h0000000000000000; + ans = 64'h9f2a5c1731798e22; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e007fffffdffff; + y = 64'h36ffffff80008000; + zrf = 64'h0000000000000000; + ans = 64'hb8f007ffbfde401f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3bbd976272fb1d2a; + y = 64'hc06ffff80007fffe; + zrf = 64'h0000000000000000; + ans = 64'hbc3d975b0d29e641; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfdffffffff00000; + y = 64'h3fdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbfcfffffffefffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47ef7ffffffeffff; + y = 64'h3f60001fffffffef; + zrf = 64'h0000000000000000; + ans = 64'h475f803efffeffdc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h262fefbfffffffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbcafffc007fffffe; + y = 64'hbfdffffefffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3c9fffbf0801ffbd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3a0000000007ff0; + y = 64'h3fdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc390000000007fee; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfd00001fffffc00; + y = 64'hc1620001fffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4142000440003b7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01100003fffffff; + y = 64'hc80ffffefffffbff; + zrf = 64'h0000000000000000; + ans = 64'h4830ffffb7fffbdf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ff00000000077fe; + y = 64'hb90000000f000000; + zrf = 64'h0000000000000000; + ans = 64'hb90000000f0077fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbcac3a797cd8e4f5; + y = 64'h3fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbc9c3a797cd8e4f5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434fff01ffffffff; + y = 64'h403dfeffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h439dfe11e7efffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00fffffffc003ff; + y = 64'hc03fffffc03ffffe; + zrf = 64'h0000000000000000; + ans = 64'h405fffffc00003fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha2d32b1c7c92b19f; + y = 64'h3fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'ha2c32b1c7c92b1a0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha640000043ffffff; + y = 64'h41f00000000fff80; + zrf = 64'h0000000000000000; + ans = 64'ha8400000440fff7f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fead93e15f6bba8; + y = 64'h41c5006a9bd9854b; + zrf = 64'h0000000000000000; + ans = 64'h41c19eea30ca59a5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37efffffffff801e; + y = 64'haebffffffffe7fff; + zrf = 64'h0000000000000000; + ans = 64'ha6bffffffffe001d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ff0000000107fff; + y = 64'h3fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3ff0000000107fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h84bffffff0ffffff; + y = 64'h3c100040003ffffe; + zrf = 64'h0000000000000000; + ans = 64'h80e0003ff8bfe1fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7f0000007ffffee; + y = 64'hbf97fffffbfffffe; + zrf = 64'h0000000000000000; + ans = 64'h4798000007ffffe2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7dc216346ad00be1; + y = 64'hbfb5d37af4d918a8; + zrf = 64'h0000000000000000; + ans = 64'hfd88ac349d895e09; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe6fff7fffffffff; + y = 64'h3feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbe6fff7ffffffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbff00000000002ff; + y = 64'h3e4b497c09187baf; + zrf = 64'h0000000000000000; + ans = 64'hbe4b497c091880cb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00ffbffffffbfff; + y = 64'h40e000000201ffff; + zrf = 64'h0000000000000000; + ans = 64'hc0fffc0004033f7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h21f3fe0000000000; + y = 64'hbfa7bdef23c7089e; + zrf = 64'h0000000000000000; + ans = 64'ha1adaa732ed451e4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0ecb0cf56c6bd69; + y = 64'h3ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc0ecb0cf56c6bd69; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02565653da65c70; + y = 64'h402fff7fffeffffe; + zrf = 64'h0000000000000000; + ans = 64'hc065650fa806b322; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43c0004000000003; + y = 64'h4eb48be91251fe77; + zrf = 64'h0000000000000000; + ans = 64'h52848c3b41f647c3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc003310bd2998fff; + y = 64'h41e00ff800000000; + zrf = 64'h0000000000000000; + ans = 64'hc1f3443345e64042; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1dfffdfdfffffff; + y = 64'h3ff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc1dfffdfe0000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0007a0c6d7de4fd; + y = 64'h4e1000400000003e; + zrf = 64'h0000000000000000; + ans = 64'hce207a4e55af9b34; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d007ff80000000; + y = 64'h41f0fffffffc0000; + zrf = 64'h0000000000000000; + ans = 64'h43d1087f77fbfe01; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d0040040000000; + y = 64'h3fffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc3e004003fffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f403ff7ffffffff; + y = 64'h3fb911d8e2d1a307; + zrf = 64'h0000000000000000; + ans = 64'h3f097613bd707829; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h274fffdffdffffff; + y = 64'hc1cff8000000007f; + zrf = 64'h0000000000000000; + ans = 64'ha92ff7e00600807d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h31f2102fde21571e; + y = 64'hbf67ffffffff7ffe; + zrf = 64'h0000000000000000; + ans = 64'hb16b1847cd317229; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbff50c7f8469cefb; + y = 64'h3ffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc0050c7f8469cef9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43dbffffdfffffff; + y = 64'h7fefff07fffffffe; + zrf = 64'h0000000000000000; + ans = 64'h03dbff26e000f7fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fdd0802349a67aa; + y = 64'h7730000000017fff; + zrf = 64'h0000000000000000; + ans = 64'h371d0802349d2069; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h46e0000001fff000; + y = 64'hb8007ffdfffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbef07ffe020fef3e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc56fffffffff7fbf; + y = 64'h4000000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc57fffffffff7fbf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffeef7a206029708; + y = 64'hbdcfa4109a3a5b22; + zrf = 64'h0000000000000000; + ans = 64'h7dce9eaa2542875b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fbffffdffffff00; + y = 64'h3e2f419626e39c29; + zrf = 64'h0000000000000000; + ans = 64'h3dff419432ca38c1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43f7dcd3b83b1a38; + y = 64'h7fded222c26e4b3d; + zrf = 64'h0000000000000000; + ans = 64'h03e6fbb995be62f0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha40fc000001ffffe; + y = 64'h4000000000000001; + zrf = 64'h0000000000000000; + ans = 64'ha41fc000001fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0a000000000023f; + y = 64'h001bf55a98315677; + zrf = 64'h0000000000000000; + ans = 64'h80cbf55a98315a63; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc802c57786e11b88; + y = 64'h402007ffffeffffe; + zrf = 64'h0000000000000000; + ans = 64'hc832ceda4291c69b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4740000fe0000000; + y = 64'hbf5fffffffffdfbf; + zrf = 64'h0000000000000000; + ans = 64'hc6b0000fdfffefdf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3b50004000040000; + y = 64'h400fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3b70004000040000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hfa5fffffffe01ffe; + y = 64'h08e4b85713fba238; + zrf = 64'h0000000000000000; + ans = 64'hc354b85713e6fe97; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3f00800007fffff; + y = 64'h3fa6e616c4e16784; + zrf = 64'h0000000000000000; + ans = 64'hc3a6f189d0fb08ec; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3b6ffffffeffffc0; + y = 64'h3c7ffffe003ffffe; + zrf = 64'h0000000000000000; + ans = 64'h37fffffdff3fffce; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0200001fffffbff; + y = 64'h400ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc0400001fffffbfd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7e000801ffffffe; + y = 64'h376fffffffbfffde; + zrf = 64'h0000000000000000; + ans = 64'haf6000801fdffeec; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbc7c1babdee0743a; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc03fc00000100000; + y = 64'h43efdfffffffdffe; + zrf = 64'h0000000000000000; + ans = 64'hc43fa040000fd03e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434ff7ffffffefff; + y = 64'h4010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h436ff7ffffffefff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2b8a7a8d3c728052; + y = 64'hbfa86acb62809317; + zrf = 64'h0000000000000000; + ans = 64'hab4434482c1fc770; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37e00002000007fe; + y = 64'hffd0008000002000; + zrf = 64'h0000000000000000; + ans = 64'hf7c00082001027fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7ed16be78e120f8; + y = 64'hb97fffffffffff9e; + zrf = 64'h0000000000000000; + ans = 64'h317d16be78e1209f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfffefffffffff7f; + y = 64'h4010000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc01fefffffffff80; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1d1ffffffbfffff; + y = 64'hbfcffffefffff800; + zrf = 64'h0000000000000000; + ans = 64'h41b1ffff6fbffb82; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40a0ffffbfffffff; + y = 64'hc80fffffbffffdff; + zrf = 64'h0000000000000000; + ans = 64'hc8c0ffff9dffff6e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc019377796930508; + y = 64'hcf2fffe00007fffe; + zrf = 64'h0000000000000000; + ans = 64'h4f59375e5f21bc52; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ff006ffffffffff; + y = 64'h401fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h402006ffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43effffdffffdfff; + y = 64'h00201fffffffbfff; + zrf = 64'h0000000000000000; + ans = 64'h04201ffefdffafdf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40107fffffff0000; + y = 64'h480ffffffff80003; + zrf = 64'h0000000000000000; + ans = 64'h48307ffffffae002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43ffc03fffffffff; + y = 64'hbffc89ceeec323b9; + zrf = 64'h0000000000000000; + ans = 64'hc40c50f464837af6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc03847d851769ff3; + y = 64'h401ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc06847d851769ff1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7e4cc95b36f21a4; + y = 64'h4340000000000000; + zrf = 64'h0000000000000000; + ans = 64'hcb34cc95b36f21a4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd79f98b4522b366f; + y = 64'h3ff0000001010000; + zrf = 64'h0000000000000000; + ans = 64'hd79f98b45426bb3f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2030000000000090; + y = 64'hc05e2e90015c47a1; + zrf = 64'h0000000000000000; + ans = 64'ha09e2e90015c48b0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h380ffff800000000; + y = 64'h3fd001fffffff800; + zrf = 64'h0000000000000000; + ans = 64'h37f001fbff7ff801; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfbfff9fffffffff; + y = 64'h4340000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc30fffa000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h44dc65e5d161d8f2; + y = 64'h7fda6d3e1bb162b2; + zrf = 64'h0000000000000000; + ans = 64'h04c773bceef1605c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7f0000007fffeff; + y = 64'h43ed0d6b02dfccdb; + zrf = 64'h0000000000000000; + ans = 64'hcbed0d6b11668089; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7f0000000000a00; + y = 64'h434fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hcb500000000009ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h406d4a7b7029484b; + y = 64'hc1cfffdfffe00000; + zrf = 64'h0000000000000000; + ans = 64'hc24d4a5e25908da6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401ffdffffffffde; + y = 64'h407ffffffffdffef; + zrf = 64'h0000000000000000; + ans = 64'h40affdfffffdffee; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47efdd469e302de0; + y = 64'hb80000000080001e; + zrf = 64'h0000000000000000; + ans = 64'hbfffdd469f2f1850; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1dfffbffc000000; + y = 64'h434ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc53fffbffbfffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbbf000000007efff; + y = 64'h001fe0000007fffe; + zrf = 64'h0000000000000000; + ans = 64'hfc1fe0000017d01c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43fffffc00100000; + y = 64'hc0171459ccff2c1a; + zrf = 64'h0000000000000000; + ans = 64'hc4271456ea7f7ca7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h404ffeffffffdfff; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h1d34898549e35148; + y = 64'h7fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h5d24898549e35148; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc079c96edc9a6761; + y = 64'hc1c010007ffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4249e33919c278aa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fe04390701a9d8d; + y = 64'h32980a64e11ad16b; + zrf = 64'h0000000000000000; + ans = 64'h32886fe96d861b6f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7ec000008000000; + y = 64'h4020200001ffffff; + zrf = 64'h0000000000000000; + ans = 64'hc81c38000b8fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43cf77ffffffffff; + y = 64'h7fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h03bf780000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1dfffffb7fffffe; + y = 64'hbf35a1c5c5463803; + zrf = 64'h0000000000000000; + ans = 64'h4125a1c5949a3b06; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4340607d2db01f47; + y = 64'hc7effffc00007ffe; + zrf = 64'h0000000000000000; + ans = 64'hcb40607b21a0bb11; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41cae866712069f4; + y = 64'hc02fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc20ae866712069f3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hac6bfffffeffffff; + y = 64'h7fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hec6bfffffefffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc050000000000006; + y = 64'h41e0000001000000; + zrf = 64'h0000000000000000; + ans = 64'hc240000001000006; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h412fd11c7ab3b025; + y = 64'hc3fffbfffbfffffe; + zrf = 64'h0000000000000000; + ans = 64'hc53fcd22532a361d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fd83ef8d8c91fd9; + y = 64'h20a65e11c2d9c573; + zrf = 64'h0000000000000000; + ans = 64'h6090f291851e0d23; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fe2ad625e1082e2; + y = 64'h7feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h7fe2ad625e1082e1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4083fffffffffeff; + y = 64'h381d4e791b603cf5; + zrf = 64'h0000000000000000; + ans = 64'h38b2510bb11c252e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402000020000003f; + y = 64'h43ffefffc0000000; + zrf = 64'h0000000000000000; + ans = 64'h442ff003bdfff87e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02fffc7fffffffe; + y = 64'h43d0008000000800; + zrf = 64'h0000000000000000; + ans = 64'hc4100063ff2007fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb80000001001ffff; + y = 64'h7ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hf80000001001ffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfce1e32ccf56348; + y = 64'h3ca1f66d4c8eeef3; + zrf = 64'h0000000000000000; + ans = 64'hbc80e7fa025544da; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'he6ffffffbfffffff; + y = 64'h41d000000005ffff; + zrf = 64'h0000000000000000; + ans = 64'he8dfffffc00bfffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7fffeffbfffffff; + y = 64'h2e8ffffc0003ffff; + zrf = 64'h0000000000000000; + ans = 64'ha69ffefbc02407dd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb000007ffffc00; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbcaffffbffffff7f; + y = 64'hbf5000ffffffdffe; + zrf = 64'h0000000000000000; + ans = 64'h3c1000fdffdfdfbe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3400008000001ff; + y = 64'h4020000fff7ffffe; + zrf = 64'h0000000000000000; + ans = 64'hc3700017ff8801bd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h442ff0000000000f; + y = 64'h38100000001ffffc; + zrf = 64'h0000000000000000; + ans = 64'h3c4ff000003fe008; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc0001ffffff000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbffbaf4aab76937a; + y = 64'h400004003ffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc00bb636ecde9bc9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47e099d3c7690936; + y = 64'hb17ffdffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hb97098ca2a2c92a4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffedfffff0000000; + y = 64'hffeffff000000800; + zrf = 64'h0000000000000000; + ans = 64'h3fedfff0f0000f80; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fdffffffffbfffd; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd74ffdfffffffffe; + y = 64'h41e020001ffffffe; + zrf = 64'h0000000000000000; + ans = 64'hd9401efe1ffdfffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbd4512fd478e497e; + y = 64'hbc0886e981ed2f8d; + zrf = 64'h0000000000000000; + ans = 64'h39602717421b4cf4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf1000000007fff0; + y = 64'h381400000000ffff; + zrf = 64'h0000000000000000; + ans = 64'hb7340000000affeb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d0bc37284221aa; + y = 64'h8000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfbf0000000001ff; + y = 64'h403f8f9584adf87e; + zrf = 64'h0000000000000000; + ans = 64'hc00e9318d8888ab2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41e0400000000001; + y = 64'hbca0000000010ffe; + zrf = 64'h0000000000000000; + ans = 64'hbe9040000001143e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc008164611e5d5a7; + y = 64'h802fffdfffffdfff; + zrf = 64'h0000000000000000; + ans = 64'h0048162dfb9fabab; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h95c40000000000ff; + y = 64'hc07103ffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h164545000000010e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37effffc3ffffffe; + y = 64'hbca0fffffffffffd; + zrf = 64'h0000000000000000; + ans = 64'hb4a0fffe01fffffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha2900000009fffff; + y = 64'hb8c85070bbd9c196; + zrf = 64'h0000000000000000; + ans = 64'h1b685070bccce5fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1ee1fffffffffff; + y = 64'h4110000003dfffff; + zrf = 64'h0000000000000000; + ans = 64'hc30e2000074bbffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ffffffffc200000; + y = 64'h6b9fffffffdfffe0; + zrf = 64'h0000000000000000; + ans = 64'h6baffffffbffffe1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe3e01e845582e7; + y = 64'hb6c009ffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h36b3ec8a97683858; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40568df4bf71d4de; + y = 64'h41dffeffffffff7f; + zrf = 64'h0000000000000000; + ans = 64'h42468d404fcbd8f5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7e0004000001fff; + y = 64'hecb0008000000007; + zrf = 64'h0000000000000000; + ans = 64'h64a000c002002008; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0386508df251ee3; + y = 64'h8010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h00586508df251ee3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fd003ffffffffff; + y = 64'h41c007fffffbffff; + zrf = 64'h0000000000000000; + ans = 64'h01a00c01fffbfefe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403fffdfffffff00; + y = 64'hdb02020000000000; + zrf = 64'h0000000000000000; + ans = 64'hdb5201edfdffff6f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbc950a021bf9dee1; + y = 64'h3db0001fffdffffe; + zrf = 64'h0000000000000000; + ans = 64'hba550a2c2fd402cd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41c0400000000007; + y = 64'h8010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h81e0400000000008; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3e90007ffffffdff; + y = 64'h4263a6b86ea9d367; + zrf = 64'h0000000000000000; + ans = 64'h4103a755a46d4640; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc000000001008000; + y = 64'h3fafff8000200000; + zrf = 64'h0000000000000000; + ans = 64'hbfbfff800220f7fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01ffffffefffdff; + y = 64'h384ffff800100000; + zrf = 64'h0000000000000000; + ans = 64'hb87ffff7ff0ffe3f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7eb8b600079a271; + y = 64'h801fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h081b8b600079a271; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4001ffffffffffff; + y = 64'hc6d00003fffffbff; + zrf = 64'h0000000000000000; + ans = 64'hc6e200047ffffb7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01fd3d6f52fa881; + y = 64'h2c3fffeff7ffffff; + zrf = 64'h0000000000000000; + ans = 64'hac6fd3c7034f382a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2e3403fffffffffe; + y = 64'hc7fffffeffffffbf; + zrf = 64'h0000000000000000; + ans = 64'hb64403ff5fdfffd5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47efffffffffefc0; + y = 64'h18b03fffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h20b03ffffffff7bf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hfd4fffffdfffffef; + y = 64'h41cffffdffffffef; + zrf = 64'h0000000000000000; + ans = 64'hff2ffffde00001de; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4a0ff80000800000; + y = 64'hc3403f829e8acc09; + zrf = 64'h0000000000000000; + ans = 64'hcd603b72be242760; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7e0010000003fff; + y = 64'hbca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h4490010000003fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f7e00003fffffff; + y = 64'h403ffffffdfbffff; + zrf = 64'h0000000000000000; + ans = 64'h3fce00003e1c3ffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40100010007fffff; + y = 64'hb7e00001ffffffff; + zrf = 64'h0000000000000000; + ans = 64'hb80000120082000d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7c8ffffffbffffbf; + y = 64'hbfe1ff8000000000; + zrf = 64'h0000000000000000; + ans = 64'hfc81ff7ffdc00fdb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h418ffffe0fffffff; + y = 64'hbca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbe3ffffe10000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43cb7d45e24373f9; + y = 64'hbf559488d625deb3; + zrf = 64'h0000000000000000; + ans = 64'hc33289cecc120933; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fe0000100ffffff; + y = 64'hc03ffffffffef7ff; + zrf = 64'h0000000000000000; + ans = 64'hc030000100ff7bfe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbcafffffffffff82; + y = 64'hc1e001000000003f; + zrf = 64'h0000000000000000; + ans = 64'h3ea0010000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc00000004007ff; + y = 64'hbcafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3c800000004007ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37ee08352ef09dd4; + y = 64'h2604d5494204c82f; + zrf = 64'h0000000000000000; + ans = 64'h1e038d4ca00591eb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb80f00ffffffffff; + y = 64'h401ffffffff800ff; + zrf = 64'h0000000000000000; + ans = 64'hb83f00fffff840b6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h32bfffffffff0002; + y = 64'hbcaffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'haf7fffffffff0000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434fffffffbffeff; + y = 64'hc34fffffdffffff0; + zrf = 64'h0000000000000000; + ans = 64'hc6afffffdfbffeef; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fdffffdfdffffff; + y = 64'h403ff3fffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h002ff3fdfec0bffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47eda330abe8cbed; + y = 64'h43dd1adeb484ff45; + zrf = 64'h0000000000000000; + ans = 64'h4bdaf4c6f6a96df0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf4526d7f8d80bd7; + y = 64'hbfd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3f2526d7f8d80bd7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3190000020000007; + y = 64'hffef800010000000; + zrf = 64'h0000000000000000; + ans = 64'hf18f80004f00002d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc009130b80fe8274; + y = 64'hb811571307061a38; + zrf = 64'h0000000000000000; + ans = 64'h382b2cb1993b60f3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3413ffffffffffe; + y = 64'hbdf7ab1d79033080; + zrf = 64'h0000000000000000; + ans = 64'h4149847bc6777048; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb8000020000ffffe; + y = 64'hbfd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h37e0002000100000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb0020000020000; + y = 64'h4640040000000007; + zrf = 64'h0000000000000000; + ans = 64'h4600060080020088; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'he17d0c35c0de73a1; + y = 64'h63185843aaa354bd; + zrf = 64'h0000000000000000; + ans = 64'h84a6194750eee6f6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h80200000000000fe; + y = 64'hbfdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h00100000000000fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'haefffffffc000003; + y = 64'h3fc186e2c19646d9; + zrf = 64'h0000000000000000; + ans = 64'haed186e2bf656a82; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01fff5fffffffff; + y = 64'hbfafff7fffffbfff; + zrf = 64'h0000000000000000; + ans = 64'h3fdffee0027fc000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb818000000000001; + y = 64'hb7f1d3f763b137ef; + zrf = 64'h0000000000000000; + ans = 64'h301abdf31589d3e8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h001ffff7ffffff7f; + y = 64'hc7e000010000003e; + zrf = 64'h0000000000000000; + ans = 64'h880ffff9ffff7ffa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0600000ffffffdf; + y = 64'h7feda1b8c591f9c6; + zrf = 64'h0000000000000000; + ans = 64'h805da1ba9fad85e2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1320001ffffffff; + y = 64'h3ff4000000000004; + zrf = 64'h0000000000000000; + ans = 64'hc136800280000003; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41e001ffffffffff; + y = 64'hbfe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc1d001ffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h802ffc0000000008; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h343ffffff007fffe; + y = 64'hc3d000007ffffdff; + zrf = 64'h0000000000000000; + ans = 64'hb82000007803fdbe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc0003fffffffbf; + y = 64'hbfe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbfb0003fffffffc0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb81003effffffffe; + y = 64'had7c04f924d58101; + zrf = 64'h0000000000000000; + ans = 64'h259c0bde5e259189; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43507fffdfffffff; + y = 64'h41c00003f7fffffe; + zrf = 64'h0000000000000000; + ans = 64'h45208003f7bff80d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbffffffffffffff0; + y = 64'h5d4ffd0000000000; + zrf = 64'h0000000000000000; + ans = 64'hdd5ffcfffffffff0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h48bffffbffffffff; + y = 64'hbfefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc8bffffbfffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e4af3f8d45e031; + y = 64'h3ca0020002000000; + zrf = 64'h0000000000000000; + ans = 64'hbe94b1d577cd70de; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h802fffffff7fdfff; + y = 64'hcfaffff7ffff8000; + zrf = 64'h0000000000000000; + ans = 64'h0feffff7ff7f6020; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37f0000003fffffd; + y = 64'ha91000100001ffff; + zrf = 64'h0000000000000000; + ans = 64'ha1100010040203fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hbfeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h8f5fffffffffffff; + y = 64'h311ffffbbfffffff; + zrf = 64'h0000000000000000; + ans = 64'h808ffffbbffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402fffffffffdfdf; + y = 64'h802ffffffe0007ff; + zrf = 64'h0000000000000000; + ans = 64'h806ffffffdffe7de; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4020000080000040; + y = 64'h4010a7a91ae0c98e; + zrf = 64'h0000000000000000; + ans = 64'h4040a7a9a01e12a8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3feffffffe000002; + y = 64'hbff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbfeffffffe000002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02e000000008000; + y = 64'hc57001ffffffff7e; + zrf = 64'h0000000000000000; + ans = 64'h45ae03c000007f1d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fcfa39599be7563; + y = 64'h638f800000001ffe; + zrf = 64'h0000000000000000; + ans = 64'h636f250743579b30; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3800008100000000; + y = 64'hb810000020000080; + zrf = 64'h0000000000000000; + ans = 64'hb020008120010280; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3caffff000000007; + y = 64'hbff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbcaffff000000008; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0a0eb920723db732; + y = 64'h41a17037c319dc53; + zrf = 64'h0000000000000000; + ans = 64'h0bc0be16b7c15790; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfdffffffe000006; + y = 64'hac64ffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h2c54fffffeb00003; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hcbc000000008007e; + y = 64'hbfffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h4bd000000008007e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfce00000007ffff; + y = 64'hbf19713ef8574e3d; + zrf = 64'h0000000000000000; + ans = 64'h3ef7da2b08d835a9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hf27fffffffffcffe; + y = 64'hc67ff7fffffdffff; + zrf = 64'h0000000000000000; + ans = 64'h790ff7fffffdd00a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h001effffffffe000; + y = 64'ha780000200000000; + zrf = 64'h0000000000000000; + ans = 64'he7af0003dfffdfff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4809b2aa55e663c2; + y = 64'hbffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc819b2aa55e663c0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02fffffbfffffde; + y = 64'hc1d000000001fbff; + zrf = 64'h0000000000000000; + ans = 64'h420fffffc003f7dc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h372ff00000003fff; + y = 64'h7fe000fdfffffffe; + zrf = 64'h0000000000000000; + ans = 64'h771ff1fb02003fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7ebfffffbffffff; + y = 64'h560000000003fff8; + zrf = 64'h0000000000000000; + ans = 64'hddfbfffffc06fff0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40000000000001ff; + y = 64'hc000000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc0100000000001ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h085fffff80007ffe; + y = 64'h402a11bb3168c296; + zrf = 64'h0000000000000000; + ans = 64'h089a11bac9223e16; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e62ef8919f035d; + y = 64'hb2a0001000000002; + zrf = 64'h0000000000000000; + ans = 64'h34962f0ec09794ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3c0010000fffffe; + y = 64'h683dfffffffffbff; + zrf = 64'h0000000000000000; + ans = 64'hec0e01e001dffbfa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3900fffffffe000; + y = 64'hc000000000000001; + zrf = 64'h0000000000000000; + ans = 64'h43a00fffffffe002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e1fff7ffffffff; + y = 64'h2250000003fffff7; + zrf = 64'h0000000000000000; + ans = 64'ha441fff8047ffdf4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbee007fffffffffa; + y = 64'h435001001ffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc2400900a00ffff7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca000000000000e; + y = 64'h41df7ffffffbffff; + zrf = 64'h0000000000000000; + ans = 64'h3e8f7ffffffc001b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47d00021fffffffe; + y = 64'hc00fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc7f00021fffffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc80978bafcce324c; + y = 64'h3fcffffffffbffdf; + zrf = 64'h0000000000000000; + ans = 64'hc7e978bafccb031a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fdc7fffffffffff; + y = 64'hc7ffffffffff6ffe; + zrf = 64'h0000000000000000; + ans = 64'hc7ec7fffffff7fbd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7e625be6b6b5de6; + y = 64'hc0103fff00000000; + zrf = 64'h0000000000000000; + ans = 64'h38067e5402bd24a7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401e4ea4f33af325; + y = 64'hc00ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc03e4ea4f33af323; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbca0000011000000; + y = 64'h43dfffdffffffe00; + zrf = 64'h0000000000000000; + ans = 64'hc08fffe021ffdbff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbca47e03cc211f1d; + y = 64'hc3c0040000000ffe; + zrf = 64'h0000000000000000; + ans = 64'h407483234d143be1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hcd00001fffffffbf; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ee889b636e67325; + y = 64'hc010000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbf0889b636e67325; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3fa207d4382d6f3; + y = 64'h4000007ffffdfffe; + zrf = 64'h0000000000000000; + ans = 64'hc40a214e4769aef6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfbc9ea0c2b4884b; + y = 64'h43f4a552574073d5; + zrf = 64'h0000000000000000; + ans = 64'hc3c277000b21a4e7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf0c000080000000; + y = 64'hc64ffffffffffc1f; + zrf = 64'h0000000000000000; + ans = 64'h456c00007ffffc9c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc2a0000000000101; + y = 64'hc010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h42c0000000000103; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h8341000001fffffe; + y = 64'hc3407ffffffffffd; + zrf = 64'h0000000000000000; + ans = 64'h06918800020ffffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h4720000780000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1a0001000001000; + y = 64'hc803d295a14dc259; + zrf = 64'h0000000000000000; + ans = 64'h49b3d2a973e3777a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb3d757f4aa26587e; + y = 64'hc01fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h340757f4aa26587e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37fffffffffff5ff; + y = 64'ha190000080001ffe; + zrf = 64'h0000000000000000; + ans = 64'h99a0000080001afd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0095ffaae004771; + y = 64'hbff0040100000000; + zrf = 64'h0000000000000000; + ans = 64'h4009665442ab7263; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4030000003ffffdf; + y = 64'hc33fffffffff1fff; + zrf = 64'h0000000000000000; + ans = 64'hc380000003ff8fde; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf1fe0000000ffff; + y = 64'hc01ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3f4fe0000000fffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3e3f7fffffbffffe; + y = 64'hc324000000800000; + zrf = 64'h0000000000000000; + ans = 64'hc173b0000055fffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca5ec40d9224e50; + y = 64'hc3100003ffff0000; + zrf = 64'h0000000000000000; + ans = 64'hbfc5ec46543125d4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7ef8000000ffffe; + y = 64'hb7e000000000007b; + zrf = 64'h0000000000000000; + ans = 64'h2fdf8000001000f1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc03c99226bab2fdf; + y = 64'hc340000000000000; + zrf = 64'h0000000000000000; + ans = 64'h438c99226bab2fdf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0d0000000800040; + y = 64'hb813260f6e05d589; + zrf = 64'h0000000000000000; + ans = 64'h38f3260f6e9f0652; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf10000004000003; + y = 64'hbe5efffffffdffff; + zrf = 64'h0000000000000000; + ans = 64'h3d7f000007be0005; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f0000080000007; + y = 64'hc01bfffffbffffff; + zrf = 64'h0000000000000000; + ans = 64'hc21c0000dbffffeb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h9239ba76a05ecbd7; + y = 64'hc340000000000001; + zrf = 64'h0000000000000000; + ans = 64'h1589ba76a05ecbd9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47bb47c5d4f98afd; + y = 64'hbfd00000004001fe; + zrf = 64'h0000000000000000; + ans = 64'hc79b47c5d566ad79; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41ffffffff7ffffb; + y = 64'h0027ffffffffeffe; + zrf = 64'h0000000000000000; + ans = 64'h0237ffffff9feffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hdd2003fff7ffffff; + y = 64'h46ffffffeffffeff; + zrf = 64'h0000000000000000; + ans = 64'he43003ffeffdff82; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3faffffb7ffffffe; + y = 64'hc34fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc30ffffb7ffffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02f080000000000; + y = 64'h7fe0000020100000; + zrf = 64'h0000000000000000; + ans = 64'h801f08003e2f0800; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4020080ffffffffe; + y = 64'hb8107b8a10fe7835; + zrf = 64'h0000000000000000; + ans = 64'hb84083d85191086d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3810008000000fff; + y = 64'hbffd243f1bcee286; + zrf = 64'h0000000000000000; + ans = 64'hb81d25283dc7de1f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc8060448957c7df4; + y = 64'hc34ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4b660448957c7df3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h48000000fffdffff; + y = 64'hbfeffffff7efffff; + zrf = 64'h0000000000000000; + ans = 64'hc8000000fbf5ffbe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h46700000003ffff7; + y = 64'hc1f403b660b099b6; + zrf = 64'h0000000000000000; + ans = 64'hc87403b66100a884; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3e3fffffeffffffa; + y = 64'hb80e1fffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hb65e1ffff0effff9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7e040000fffffff; + y = 64'hffe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h07d040000fffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00fffffffefffdf; + y = 64'h41e0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc1ffffffffefffdf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0107fffffffffdf; + y = 64'h3ff8ba6f4e5ae4ee; + zrf = 64'h0000000000000000; + ans = 64'hc0198042c8cdbbe2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1df80007fffffff; + y = 64'h3c7ffff7ffff7ffe; + zrf = 64'h0000000000000000; + ans = 64'hbe6f7ff89fff61fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc34ffff7feffffff; + y = 64'hffe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h033ffff7ff000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2d594c653e03ade2; + y = 64'hc3e000003fffc000; + zrf = 64'h0000000000000000; + ans = 64'hb1494c65a334dda8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb800001ffe000000; + y = 64'hbfde924b4ffe25d9; + zrf = 64'h0000000000000000; + ans = 64'h37ee928870c27c6c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc049124f686bf9b3; + y = 64'hb7f000fffffff000; + zrf = 64'h0000000000000000; + ans = 64'h384913e08d626761; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffdffffffffdffff; + y = 64'hffefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3fdffffffffdffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffd00400000000ff; + y = 64'hc0ada76631d3f698; + zrf = 64'h0000000000000000; + ans = 64'h008daed00b606d6f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h3fe0000ffffff7ff; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4020c540619836fa; + y = 64'hc7f000ffefffffff; + zrf = 64'h0000000000000000; + ans = 64'hc820c64ca4d9101a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4364893437d666c6; + y = 64'hffeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h8364893437d666c4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1cfe0000000ffff; + y = 64'hc1d0000080400000; + zrf = 64'h0000000000000000; + ans = 64'h43afe000ff808000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbd70000fff7ffffe; + y = 64'h291fffffe0000010; + zrf = 64'h0000000000000000; + ans = 64'ha6a0000fef7ff006; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1f20000000001ff; + y = 64'h4012001fffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc21440240000023d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb80fffffffbfdfff; + y = 64'hfff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h780fffffffbfdfff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffe000200000ffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401650b0af16768d; + y = 64'hbe1001fe00000000; + zrf = 64'h0000000000000000; + ans = 64'hbe365377fb164379; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f9000008000ffff; + y = 64'hbfdffffffe000100; + zrf = 64'h0000000000000000; + ans = 64'hbf8000007f010076; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1effc1fffffffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h05d7728ced9039cb; + y = 64'hc1eeffffff7fffff; + zrf = 64'h0000000000000000; + ans = 64'h87d6b6f885c5edc8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h39a5106aa3a32bb8; + y = 64'hbf1000fffffff7fe; + zrf = 64'h0000000000000000; + ans = 64'hb8c511bbaa4d5b5f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4070001ffffbfffe; + y = 64'hc7e00000080ffffe; + zrf = 64'h0000000000000000; + ans = 64'hc8600020080c101b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01fffffffff0080; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc97ffffffff00ffe; + y = 64'hc3c002000000000f; + zrf = 64'h0000000000000000; + ans = 64'h4d5001fffff8070f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fe6ef3744bfe08c; + y = 64'h4000000050000000; + zrf = 64'h0000000000000000; + ans = 64'h3ff6ef37b76bf4e4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc79feffffffeffff; + y = 64'h42b040000000ffff; + zrf = 64'h0000000000000000; + ans = 64'hca6037e000007d7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f03ffffffdffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fbff0000fffffff; + y = 64'hbfd007fffffeffff; + zrf = 64'h0000000000000000; + ans = 64'hbf9ffff8100600fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0d000000001ffbf; + y = 64'hc03ba46e644e4e9c; + zrf = 64'h0000000000000000; + ans = 64'h411ba46e6451c2ba; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h48000000401fffff; + y = 64'hc3efffffbfff7fff; + zrf = 64'h0000000000000000; + ans = 64'hcc000000201fbf7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h380ffffffeffffff; + y = 64'hb7efff00007fffff; + zrf = 64'h0000000000000000; + ans = 64'hb00ffeffff8007fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fefffff0000007f; + y = 64'h41c0080fffffffff; + zrf = 64'h0000000000000000; + ans = 64'h41c0080f7fbf803f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h8010e080b96f5390; + y = 64'hc1c0000fffffefff; + zrf = 64'h0000000000000000; + ans = 64'h01e0e09199effc1e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47ffffffffffffdd; + y = 64'hbfa080000000000f; + zrf = 64'h0000000000000000; + ans = 64'hc7b07ffffffffffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h480dfffffff7ffff; + y = 64'hbfbffffffc0003ff; + zrf = 64'h0000000000000000; + ans = 64'hc7ddfffffc3803be; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc0000000007efe; + y = 64'hc3eea93f38dfa88a; + zrf = 64'h0000000000000000; + ans = 64'hc3bea93f38e09be5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4683fff7ffffffff; + y = 64'hbfbfffdfffffffe0; + zrf = 64'h0000000000000000; + ans = 64'hc653ffe40007ffeb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fefffffffe003fe; + y = 64'h381b9635176eb14a; + zrf = 64'h0000000000000000; + ans = 64'h381b963517531e86; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc4500000005fffff; + y = 64'hc03a20ab4de47fc9; + zrf = 64'h0000000000000000; + ans = 64'h449a20ab4e8143cc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h38101ffffefffffe; + y = 64'hbfc3fffff0000000; + zrf = 64'h0000000000000000; + ans = 64'hb7e427ffee9ffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfeffffffffdffde; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4710003bfffffffe; + y = 64'h0010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0730003bfffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h448c88eae42cd15d; + y = 64'hc7e00000001dffff; + zrf = 64'h0000000000000000; + ans = 64'hcc7c88eae4625213; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb810bffffffffffe; + y = 64'hbfdfffff8000ffff; + zrf = 64'h0000000000000000; + ans = 64'h3800bfffbd0085fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc030588b5c2ae8f5; + y = 64'hbef5ba5fd85a7448; + zrf = 64'h0000000000000000; + ans = 64'h3f36329e27cafa0d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2a8ffff000007ffe; + y = 64'h3e0ffff800004000; + zrf = 64'h0000000000000000; + ans = 64'h28afffe80004bffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h456f400000000000; + y = 64'h924ffffffbffdfff; + zrf = 64'h0000000000000000; + ans = 64'h97cf3ffffc17e0bf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f000001fffffdf; + y = 64'h480fffff7fefffff; + zrf = 64'h0000000000000000; + ans = 64'h500fffffbfeffebd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h400e00000000007e; + y = 64'h001fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h003e00000000007e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e1a9bf123eaa3f; + y = 64'hffefffff7ffff7ff; + zrf = 64'h0000000000000000; + ans = 64'h01e1a9becb97a98c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7b70000081fffffe; + y = 64'hbf904000000003fe; + zrf = 64'h0000000000000000; + ans = 64'hfb104000840803fb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb810100200000000; + y = 64'h37effffcffffffff; + zrf = 64'h0000000000000000; + ans = 64'hb01010007e7fcfff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3bfffffff780000; + y = 64'h001ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h83efffffff77fffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe7ffc2000000000; + y = 64'hc100000000060000; + zrf = 64'h0000000000000000; + ans = 64'h3f8ffc20000bfe8c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h8020000000000ffb; + y = 64'h47f000000080003f; + zrf = 64'h0000000000000000; + ans = 64'h882000000080103a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h381300ec5ae729a0; + y = 64'hc0c3975208fc137b; + zrf = 64'h0000000000000000; + ans = 64'hb8e744d2d1f394c2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40cffffffff80ffe; + y = 64'h3ca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3d7ffffffff80ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47effffebffffffe; + y = 64'hbf936fbdb3967862; + zrf = 64'h0000000000000000; + ans = 64'hc7936fbcf1390f5c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h45a01fffff7fffff; + y = 64'hc3c0020200000000; + zrf = 64'h0000000000000000; + ans = 64'hc9702206037fefee; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h38cffff800003fff; + y = 64'h3f80011fffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3860011bffb82001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcfffffffffc01f; + y = 64'h3ca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbc7fffffffffc020; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4020000010040000; + y = 64'hc03000000207fffe; + zrf = 64'h0000000000000000; + ans = 64'hc0600000120c0000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbc9fffbfff7fffff; + y = 64'hc1d0000003ffff80; + zrf = 64'h0000000000000000; + ans = 64'h3e7fffc0077feeff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43fffffe0001fffe; + y = 64'hb16080003ffffffe; + zrf = 64'h0000000000000000; + ans = 64'hb5707fff380103fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fdfddbc012dea56; + y = 64'h3cafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3c9fddbc012dea56; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434352c905da85ec; + y = 64'h7fd0000020000001; + zrf = 64'h0000000000000000; + ans = 64'h032352c92c8017f9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb2cfffffffbfff80; + y = 64'hc0afffff7fffffff; + zrf = 64'h0000000000000000; + ans = 64'h338fffff7fbfff81; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc06ffffffdfffff0; + y = 64'h443f000000001000; + zrf = 64'h0000000000000000; + ans = 64'hc4befffffe100ff0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3e8ff800000000ff; + y = 64'h3caffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3b4ff800000000fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbffffffffffff007; + y = 64'h400c899bdf7fd714; + zrf = 64'h0000000000000000; + ans = 64'hc01c899bdf7fc8d5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc5c1368ba271b92a; + y = 64'hb811ffcdc1bd41c6; + zrf = 64'h0000000000000000; + ans = 64'h3de35d27095069f1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h6480000100080000; + y = 64'hc3cca35dae1517d8; + zrf = 64'h0000000000000000; + ans = 64'he85ca35f78594468; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1d00000000083ff; + y = 64'h3fd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc1b00000000083ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403bd37b5f01600f; + y = 64'h40110003fffffffe; + zrf = 64'h0000000000000000; + ans = 64'h405d90ba09d04dcd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h409000003fff0000; + y = 64'hc020fffffffffffc; + zrf = 64'h0000000000000000; + ans = 64'hc0c1000043feeffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hfe6000100007fffe; + y = 64'hbd6feffffffc0000; + zrf = 64'h0000000000000000; + ans = 64'h7bdff01ff00bf7f9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fe00000007c0000; + y = 64'h3fd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h7fc00000007c0002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401ffffffffff800; + y = 64'hc020000000000300; + zrf = 64'h0000000000000000; + ans = 64'hc04ffffffffffdff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe004000000007fe; + y = 64'h3fdffff7ff7fffff; + zrf = 64'h0000000000000000; + ans = 64'hbdf03ffbefbf07fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43d00000003efffe; + y = 64'hc02fffffafffffff; + zrf = 64'h0000000000000000; + ans = 64'hc40fffffb07dfff9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h203000000001fbff; + y = 64'h3fdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h202000000001fbff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h30feffffffffefff; + y = 64'h5137a780ee1f0e89; + zrf = 64'h0000000000000000; + ans = 64'h4246ea44e6ae0a41; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3cc00000000001f; + y = 64'h3ffffff8003fffff; + zrf = 64'h0000000000000000; + ans = 64'hc3dbfff90038001e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401fe0000003fffe; + y = 64'h3fa47c191d152036; + zrf = 64'h0000000000000000; + ans = 64'h3fd4679d03fa9a98; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb1c0001fff7fffff; + y = 64'h3fdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hb1b0001fff7ffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0035f74d9e4a66e; + y = 64'hc1c000800000003f; + zrf = 64'h0000000000000000; + ans = 64'h41d3600fd58b75e0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402fe04a50d62ff8; + y = 64'hbfc0018000000000; + zrf = 64'h0000000000000000; + ans = 64'hbfffe34757cdc40c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f08000007ffffe; + y = 64'hee9effffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hf69ff80000f7fffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb11000007ffffe00; + y = 64'h3fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hb10000007ffffe00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00000401ffffffe; + y = 64'h3fdfffffbfdfffff; + zrf = 64'h0000000000000000; + ans = 64'hbff0003fffef7f7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fdfebffffffffff; + y = 64'h4fafffffffffff7d; + zrf = 64'h0000000000000000; + ans = 64'h0f9febffffffff7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h00300000bfffffff; + y = 64'hc025ac1ab7310df3; + zrf = 64'h0000000000000000; + ans = 64'h8065ac1bbb424e87; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe400001fffffff; + y = 64'h3fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbfd4000020000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffe0001000000000; + y = 64'hb4c3fffffffbffff; + zrf = 64'h0000000000000000; + ans = 64'h74b40013fffbfffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41800000007ffbff; + y = 64'h41ccce2758e7ac2f; + zrf = 64'h0000000000000000; + ans = 64'h435cce2759ce1635; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3ce000000000002; + y = 64'h43c88b83def64702; + zrf = 64'h0000000000000000; + ans = 64'hc7a702cba106e293; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0020003ffffff800; + y = 64'h3fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0020003ffffff800; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402ff87ffffffffe; + y = 64'hab9f7ffffdffffff; + zrf = 64'h0000000000000000; + ans = 64'habdf789dfe0077fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb80cef50bd17db40; + y = 64'hc05fffc00000000e; + zrf = 64'h0000000000000000; + ans = 64'h387cef16de76611d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d0080000fffffe; + y = 64'h381000ffffffff7f; + zrf = 64'h0000000000000000; + ans = 64'h39f0090081000f7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47effffffdfffbff; + y = 64'h3feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h47effffffdfffbfe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7e46b2ebd63014a; + y = 64'hbec00003feffffff; + zrf = 64'h0000000000000000; + ans = 64'h46b46b33d6e7fdb6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf80040000000002; + y = 64'h3ccffff5ffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbc6003fafec00001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ecfff8008000000; + y = 64'h3ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3ecfff8008000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3810410000000000; + y = 64'h3ef621b8ce00723b; + zrf = 64'h0000000000000000; + ans = 64'h37167ba1ccc5540c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d6e92ed3061ec0; + y = 64'hbfb3ffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h439ca37a87c7a66f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb0080000100000; + y = 64'hbfbff00000003fff; + zrf = 64'h0000000000000000; + ans = 64'hbf7ffff80020301e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha5a7fffffffffffe; + y = 64'h3ff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'ha5a7ffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3d4000ffffffffff; + y = 64'h3d47f68d8eb6b9a4; + zrf = 64'h0000000000000000; + ans = 64'h3a97f80cf78fa50f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc16ff80001fffffe; + y = 64'hc1dffffffffffdfc; + zrf = 64'h0000000000000000; + ans = 64'h435ff80001fffdfb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb81f000000003fff; + y = 64'h4000000000001000; + zrf = 64'h0000000000000000; + ans = 64'hb82f000000005eff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fdb6c04a6feb9f6; + y = 64'h3fffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3feb6c04a6feb9f6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fed24f6ded74376; + y = 64'hcc7ffffffdffffef; + zrf = 64'h0000000000000000; + ans = 64'hcc7d24f6dd04f3f8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01000000002003e; + y = 64'hc02f044788fbab9f; + zrf = 64'h0000000000000000; + ans = 64'h404f044788ff8ca1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02d8271a41fe6f3; + y = 64'h47ffffffff600000; + zrf = 64'h0000000000000000; + ans = 64'hc83d8271a38c5aba; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7eed2778ed7be16; + y = 64'h3ffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc7fed2778ed7be14; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1fb827b7979160a; + y = 64'h3fcbb9627f4399d0; + zrf = 64'h0000000000000000; + ans = 64'hc1d7d57735568a19; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h404ffffff0200000; + y = 64'hc1cde621665f3871; + zrf = 64'h0000000000000000; + ans = 64'hc22de621578a0ddf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffe3fffffffffffb; + y = 64'hc03dc3321aaa5380; + zrf = 64'h0000000000000000; + ans = 64'h003299ff50aa742c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfb0000ffffffe00; + y = 64'h4000000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbfc0000ffffffe00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43d00000000efffe; + y = 64'h402ffeffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h440fff00001dff0c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfb000003fbffffe; + y = 64'h79110003ffffffff; + zrf = 64'h0000000000000000; + ans = 64'hf8d1000443bc0fec; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf800000ffffefff; + y = 64'hc7f000000107ffff; + zrf = 64'h0000000000000000; + ans = 64'h478000010107f00f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc04000000000801f; + y = 64'h4000000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc050000000008020; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb8000000001fffff; + y = 64'h3fcefffffbffffff; + zrf = 64'h0000000000000000; + ans = 64'hb7defffffc3dfffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcffffdffffbfff; + y = 64'hc16907618a99b2b2; + zrf = 64'h0000000000000000; + ans = 64'h4149075ffa2367f9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7efffffdffffffc; + y = 64'h400fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc80fffffdffffffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40440a2b86699a62; + y = 64'hbdfffa0000000000; + zrf = 64'h0000000000000000; + ans = 64'hbe5406699e406695; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca3fffffffffeff; + y = 64'hbf02ffafb4e9241d; + zrf = 64'h0000000000000000; + ans = 64'hbbb7bf9ba2236bf3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h862000000000807f; + y = 64'h402007ffffffff80; + zrf = 64'h0000000000000000; + ans = 64'h865008000000803f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb8c0000037ffffff; + y = 64'h400ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hb8e0000037fffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f70002000000fff; + y = 64'hbe501ffdfffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbdd0201e3ffc101c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h433fffffffefff80; + y = 64'h41dffffdfbffffff; + zrf = 64'h0000000000000000; + ans = 64'h452ffffdfbefff81; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401feffdffffffff; + y = 64'h7fd0000000000103; + zrf = 64'h0000000000000000; + ans = 64'h7fefffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fe003fffffdffff; + y = 64'h4010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h400003fffffdffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3e6c4abfbae3348; + y = 64'hc3dffbfffdfffffe; + zrf = 64'h0000000000000000; + ans = 64'h47d6c1d364c272c1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41defffffefffffe; + y = 64'hc01fffffffffe004; + zrf = 64'h0000000000000000; + ans = 64'hc20efffffeffe101; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hcf7fffffff87ffff; + y = 64'h4010000000000001; + zrf = 64'h0000000000000000; + ans = 64'hcf9fffffff880000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h53598c812c3c39dd; + y = 64'h3f20000100fffffe; + zrf = 64'h0000000000000000; + ans = 64'h52898c82c69d14b1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02f00000003ffff; + y = 64'hc00814fbd82d4e31; + zrf = 64'h0000000000000000; + ans = 64'h40475453f96ee65f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fbabd40046f3063; + y = 64'h959ffc00000fffff; + zrf = 64'h0000000000000000; + ans = 64'h956ab9e85c7c011c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h801010007ffffffe; + y = 64'h401fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h804010007ffffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h359ddddaad68456b; + y = 64'hb8000000fdfffffe; + zrf = 64'h0000000000000000; + ans = 64'hadaddddc878a34e8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3c90596ea75d9c9; + y = 64'h40c730520dce2fe8; + zrf = 64'h0000000000000000; + ans = 64'hc4a221cd04029cdd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ff0000000000000; + y = 64'hbffbffffffffdfff; + zrf = 64'h0000000000000000; + ans = 64'hbffbffffffffdfff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca4001000000000; + y = 64'h401ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3cd4000fffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1cfe7ffffffffff; + y = 64'hc0c7dd56f5c5966e; + zrf = 64'h0000000000000000; + ans = 64'h42a7cb70f48d423d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcc298ec1c2e8e2; + y = 64'h4010201000000000; + zrf = 64'h0000000000000000; + ans = 64'hbfec61fe08d53076; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3dffffff8000001; + y = 64'h3fe0020000003ffe; + zrf = 64'h0000000000000000; + ans = 64'hc3d001fffbffbffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb81a1948cf487bc6; + y = 64'h4340000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbb6a1948cf487bc6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fe20fffffffffff; + y = 64'h3d90000000000007; + zrf = 64'h0000000000000000; + ans = 64'h7d82100000000007; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h316ffffffffc0003; + y = 64'h47f001fefffffffe; + zrf = 64'h0000000000000000; + ans = 64'h397001fefffdffc0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40b49d4b49693e4c; + y = 64'h3f9fe0000001ffff; + zrf = 64'h0000000000000000; + ans = 64'h406488adfe211ee2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f5fffff7ffdffff; + y = 64'h4340000000000001; + zrf = 64'h0000000000000000; + ans = 64'h42afffff7ffe0001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc03ffffffd000000; + y = 64'hbb8df851d942ba18; + zrf = 64'h0000000000000000; + ans = 64'h3bddf851d673726c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfca6a374638a9a7; + y = 64'h3694000003fffffe; + zrf = 64'h0000000000000000; + ans = 64'hb67082628f30b0ef; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402ffffbffffff7f; + y = 64'h4800080fffffffff; + zrf = 64'h0000000000000000; + ans = 64'h4840080dfefdffbf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0c000000001fffd; + y = 64'h434fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc42000000001fffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ba00800003fffff; + y = 64'h3ff9a9a129c791b3; + zrf = 64'h0000000000000000; + ans = 64'h7ba9b675fac31bff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4517d68d04fb3028; + y = 64'hf67973648aee082d; + zrf = 64'h0000000000000000; + ans = 64'hfba2f5941ca565da; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h5bbfffffbfff7fff; + y = 64'h3f9fffff7ffffffc; + zrf = 64'h0000000000000000; + ans = 64'h5b6fffff3fff80fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f9b338f2e03e52; + y = 64'h434ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4559b338f2e03e51; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7e0880000000000; + y = 64'hc8500400001ffffe; + zrf = 64'h0000000000000000; + ans = 64'h40408c2200210ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401f7fffffffe000; + y = 64'h4110000003f7ffff; + zrf = 64'h0000000000000000; + ans = 64'h413f800007d01fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d001000000ffff; + y = 64'hbfe000fbfffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc1c001fc0fc1000c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h38000000008001ff; + y = 64'h305ffffdfffffffb; + zrf = 64'h0000000000000000; + ans = 64'h286ffffe010003e9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h38143510168bb69f; + y = 64'hbc6ffeffffefffff; + zrf = 64'h0000000000000000; + ans = 64'hb494346e6e00e7b8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc06400000000000e; + y = 64'hbd00000ffffffdff; + zrf = 64'h0000000000000000; + ans = 64'h3d740013fffffd8d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d0000fffffffef; + y = 64'h7fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h83c0000ffffffff0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f607efffffffffe; + y = 64'hc3effeffbfffffff; + zrf = 64'h0000000000000000; + ans = 64'hc3607e7be701fffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfff00000000007f; + y = 64'hb57f6f93eb9411db; + zrf = 64'h0000000000000000; + ans = 64'h358e74174c3771c9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc000400007ffff; + y = 64'hbfb0000000fdffff; + zrf = 64'h0000000000000000; + ans = 64'hbf800040010603f6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc020007fdfffffff; + y = 64'h7fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h8020007fdffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf958caed0772f21; + y = 64'h3fdffffff0000fff; + zrf = 64'h0000000000000000; + ans = 64'hbf858caec5b0e27e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h413fffffffffffbe; + y = 64'hc009e266b690362d; + zrf = 64'h0000000000000000; + ans = 64'hc159e266b69035f7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfedfffffffffffc; + y = 64'h7feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hffedfffffffffffa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h57cfffffdfffffdf; + y = 64'ha1b0007fffefffff; + zrf = 64'h0000000000000000; + ans = 64'hb990007fefef7fee; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402fffff5fffffff; + y = 64'hc2f007bfffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc33007bfafd93ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc34f80001fffffff; + y = 64'hb7fffffe0007ffff; + zrf = 64'h0000000000000000; + ans = 64'h3b5f7ffe2807ddff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d04000007fffff; + y = 64'h7ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h01d04000007fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfa03ffff7ffffff; + y = 64'hc3dfbffffffffeff; + zrf = 64'h0000000000000000; + ans = 64'h43901f7ff80fff7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha000000000000fff; + y = 64'hc7e07f0000000000; + zrf = 64'h0000000000000000; + ans = 64'h27f07f000000107e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe00020000003ff; + y = 64'h3fbffffff7fffdfe; + zrf = 64'h0000000000000000; + ans = 64'hbfb0001ffbfffafd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc030000001ffff7f; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3fb7e9782f90cc2; + y = 64'hbca0800000004000; + zrf = 64'h0000000000000000; + ans = 64'h40ac5a8c3f114323; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1df2a4105eef916; + y = 64'hc34fffffffffffe3; + zrf = 64'h0000000000000000; + ans = 64'h453f2a4105eef8fa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7df000400000007e; + y = 64'hbfdfffdffffdfffe; + zrf = 64'h0000000000000000; + ans = 64'hfde0002fffbf0078; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40c794dd327440fd; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000001ff8; + y = 64'h4800020000010000; + zrf = 64'h0000000000000000; + ans = 64'h0820020000011ffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3c00007fffffefe; + y = 64'h3fcffbfffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc39ffc0ffdfffdfa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2510000000000700; + y = 64'hbff00004000007fe; + zrf = 64'h0000000000000000; + ans = 64'ha510000400000efe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43d3fffffffc0000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4d8ffbdfffffffff; + y = 64'hbca03ffffffffff6; + zrf = 64'h0000000000000000; + ans = 64'hca403de7bffffff5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h97ead859955088eb; + y = 64'h4a6d12c61bd00359; + zrf = 64'h0000000000000000; + ans = 64'ha26863d113b451ef; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfd1fffdfffffffe; + y = 64'h8640000007fdffff; + zrf = 64'h0000000000000000; + ans = 64'h0621fffe08fdbefe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h07cfffff0000ffff; + y = 64'h8000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434000003fffbfff; + y = 64'hd29ffffffc7ffffe; + zrf = 64'h0000000000000000; + ans = 64'hd5f000003e3fbff7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc346f4237b7cbfe9; + y = 64'h471000000000006f; + zrf = 64'h0000000000000000; + ans = 64'hca66f4237b7cc088; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2c4c0000003fffff; + y = 64'h230ffffc00400000; + zrf = 64'h0000000000000000; + ans = 64'h0f6bfffc8077fff8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc4400000000000; + y = 64'h43cc71fdbb55b450; + zrf = 64'h0000000000000000; + ans = 64'h43a20022908c3c1b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbdeffbfffff7fffe; + y = 64'h403000000000dfff; + zrf = 64'h0000000000000000; + ans = 64'hbe2ffbfffff9bfc4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc020001001000000; + y = 64'hc34ec9a95e5b23e2; + zrf = 64'h0000000000000000; + ans = 64'h437ec9c829f11cd4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d7fffffffdffff; + y = 64'hc01ff7feffffffff; + zrf = 64'h0000000000000000; + ans = 64'h4407f9ff3ffe007f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb245df5ba33a7f85; + y = 64'h40100000004003ff; + zrf = 64'h0000000000000000; + ans = 64'hb265df5ba392026a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc06000007fffff7f; + y = 64'h43eff90000000000; + zrf = 64'h0000000000000000; + ans = 64'hc45ff900ffc7fefe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc18ffc00000fffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0f1fffffffff000; + y = 64'h429effffdfffffff; + zrf = 64'h0000000000000000; + ans = 64'hc3a16fffedfff07f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3c8000000bffffff; + y = 64'hc52fff0000400000; + zrf = 64'h0000000000000000; + ans = 64'hc1bfff00183f3ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h381fffffffbff7fe; + y = 64'h8010000000000000; + zrf = 64'h0000000000000000; + ans = 64'hf83fffffffbff7fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h002ffffff0003fff; + y = 64'h3ff000008000003f; + zrf = 64'h0000000000000000; + ans = 64'h0030000078001fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7fca13a9dbf49e7; + y = 64'hbfe80000000001ff; + zrf = 64'h0000000000000000; + ans = 64'h37f578ebf64f7937; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47e000000800003e; + y = 64'hbfc080003ffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc7b080004840005d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h8b3ffc2000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4120001fff800000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h517000001fff7ffe; + y = 64'hc1cf000000003ffe; + zrf = 64'h0000000000000000; + ans = 64'hd34f00003dff47fa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h380e000000000010; + y = 64'h801fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hf83e00000000000f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41168636954ae162; + y = 64'hbfec00000001fffe; + zrf = 64'h0000000000000000; + ans = 64'hc113b56fc2a2ed97; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h330e000100000000; + y = 64'h43ee0000000001ff; + zrf = 64'h0000000000000000; + ans = 64'h370c2000f00001e0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h802d3018ea8c241d; + y = 64'hc007fdffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0045e23fae5a7253; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbffc505cc8a6e8ea; + y = 64'h801ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h002c505cc8a6e8e9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfbff8000001ffff; + y = 64'h3acffffffff00000; + zrf = 64'h0000000000000000; + ans = 64'hba9ff7fffff203fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc80000001ffffbfe; + y = 64'h3e40880000000000; + zrf = 64'h0000000000000000; + ans = 64'hc6508800210ffbdb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43d0080000000004; + y = 64'hbca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc080080000000004; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41367c708f592990; + y = 64'hc00a5078d45675b0; + zrf = 64'h0000000000000000; + ans = 64'hc1527da775ba1512; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3474f322c53fb6a; + y = 64'h4c386ada422df8a5; + zrf = 64'h0000000000000000; + ans = 64'hcf91c93af32c74b4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41dffffff00003fe; + y = 64'hbca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbe8ffffff00003ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f0000001fdffff; + y = 64'h5ff53ac9cf7cf6c8; + zrf = 64'h0000000000000000; + ans = 64'h61f53ac9d221a8a8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb000001fffff7e; + y = 64'h3ffbad41f232c7b1; + zrf = 64'h0000000000000000; + ans = 64'h3fbbad42298d4ab5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43e047fffffffffe; + y = 64'h4000003ffdfffffe; + zrf = 64'h0000000000000000; + ans = 64'h43f048411df6fffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf9e000002000000; + y = 64'hbcafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3c5e000002000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc53fffffff77ffff; + y = 64'hc05ffe000000003e; + zrf = 64'h0000000000000000; + ans = 64'h45affdffff7808be; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1cffffffffffe1f; + y = 64'h717000005fffffff; + zrf = 64'h0000000000000000; + ans = 64'hf35000005fffff0e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402000003ffffbff; + y = 64'h403000001f800000; + zrf = 64'h0000000000000000; + ans = 64'h406000005f7ffc7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc039d0b1184126b6; + y = 64'h06ad12e793d72c70; + zrf = 64'h0000000000000000; + ans = 64'h86f77460b35b5a57; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc048000000000000; + y = 64'h434000000800003e; + zrf = 64'h0000000000000000; + ans = 64'hc39800000c00005d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc06fc00001ffffff; + y = 64'h0ec040faf47bd51e; + zrf = 64'h0000000000000000; + ans = 64'h8f402078ff96ed22; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf87ffffff7fffff; + y = 64'hbfd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3f67ffffff7fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbc70000200001fff; + y = 64'hbf29fffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3baa0003400033fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc000005fffffffff; + y = 64'h403ffffffff00002; + zrf = 64'h0000000000000000; + ans = 64'hc050005ffff7ffd0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h45f00017fffffffe; + y = 64'h47f2f5abbf28ad12; + zrf = 64'h0000000000000000; + ans = 64'h4df2f5c82faa4bcd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0dd00000000fffff; + y = 64'hbfd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h8db0000000100000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf0d45dab53a65b8; + y = 64'h380fff7ffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hb72d45659dcf90cc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hbfdeba273f5031a6; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fdffffffffffdfc; + y = 64'h3cd000008000001e; + zrf = 64'h0000000000000000; + ans = 64'h7cc000007fffff1c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha0bffffdfefffffe; + y = 64'hbfdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h20affffdfefffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3feffff80000001e; + y = 64'hc3dffff802000000; + zrf = 64'h0000000000000000; + ans = 64'hc3dffff00201ff9d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401bb79c251f0d03; + y = 64'hbbfdf1012672bca6; + zrf = 64'h0000000000000000; + ans = 64'hbc29ef2550a601bc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffdfffffc000000f; + y = 64'h22efffffff0001ff; + zrf = 64'h0000000000000000; + ans = 64'he2dfffffbf00020f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc8b60e46a80f6d; + y = 64'hbfdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbfb8b60e46a80f6b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4141058dae2059c1; + y = 64'hbf9fffff0003ffff; + zrf = 64'h0000000000000000; + ans = 64'hc0f1058d25f60d01; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hca3326c13bfeba24; + y = 64'hbfe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h4a2326c13bfeba24; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb53bffffffffc000; + y = 64'h43cfffffffffefdf; + zrf = 64'h0000000000000000; + ans = 64'hb91bffffffffb1e3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb4f0000020ffffff; + y = 64'h40095713ee956d23; + zrf = 64'h0000000000000000; + ans = 64'hb509571422d9063d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0200001e0000000; + y = 64'hbfe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h40100001e0000002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41c00080000000ff; + y = 64'h40c000000000083f; + zrf = 64'h0000000000000000; + ans = 64'h429000800000093f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7d501ff7ffffffff; + y = 64'hbff0000004000400; + zrf = 64'h0000000000000000; + ans = 64'hfd501ff804080206; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0cfeffffffffffe; + y = 64'h4010ffffffffffde; + zrf = 64'h0000000000000000; + ans = 64'hc0f0f77fffffffdd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc06d169113d091; + y = 64'hbfefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3fc06d169113d091; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbd5fdffdffffffff; + y = 64'h5644b72ace1bbb6b; + zrf = 64'h0000000000000000; + ans = 64'hd3b4a27257daf2cd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h381ffff7ffffeffe; + y = 64'hbf80003fffffe000; + zrf = 64'h0000000000000000; + ans = 64'hb7b0003bffefd7fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3dc000000ffbffff; + y = 64'h41c68f9b37c7034c; + zrf = 64'h0000000000000000; + ans = 64'h3f968f9b4e50fa9c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7ffffffdf800000; + y = 64'hbfeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h47ffffffdf7fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe0000000001000; + y = 64'hbf3ffe00000001ff; + zrf = 64'h0000000000000000; + ans = 64'h3f2ffe00000021fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h380a8e204e2cb7dd; + y = 64'h7fdfffcfffffffff; + zrf = 64'h0000000000000000; + ans = 64'h77fa8df878fc429a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf8f000000000100; + y = 64'hc29ffffffff04000; + zrf = 64'h0000000000000000; + ans = 64'h423efffffff0bf00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h330fc7fffffffffe; + y = 64'hbff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hb30fc7fffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f0000000003ffe; + y = 64'hc1d800000000000e; + zrf = 64'h0000000000000000; + ans = 64'hc3d800000000600b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e676ed17a50125; + y = 64'hbe900000000fefff; + zrf = 64'h0000000000000000; + ans = 64'h408676ed17bb619a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb80010001fffffff; + y = 64'h40e01ffffff7fffe; + zrf = 64'h0000000000000000; + ans = 64'hb8f030202037f7fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc020000000000000; + y = 64'hbff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h4020000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h486007fffffffdff; + y = 64'h3ca000003fc00000; + zrf = 64'h0000000000000000; + ans = 64'h451008003fdfddff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb81ffffffffff0fe; + y = 64'hba0dfffffbfffffe; + zrf = 64'h0000000000000000; + ans = 64'h323dfffffbfff1ed; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h205043ffffffffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ffffffdfffffff8; + y = 64'hbfffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc00ffffdfffffff7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fefffffffff7dff; + y = 64'h3a6000040ffffffe; + zrf = 64'h0000000000000000; + ans = 64'h3a6000040fffbefe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401bffffeffffffe; + y = 64'hb7fc497e1cedf965; + zrf = 64'h0000000000000000; + ans = 64'hb828c04e4b2b7b28; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc34fff0000007fff; + y = 64'hbffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h435fff0000007ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fbfc000fffffffe; + y = 64'hbff0000040007ffe; + zrf = 64'h0000000000000000; + ans = 64'hbfbfc0017f0101fa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h407000003ffbfffe; + y = 64'h38042862fe8e3368; + zrf = 64'h0000000000000000; + ans = 64'h388428634f2ab547; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40f000000ff00000; + y = 64'hc1effffff0003fff; + zrf = 64'h0000000000000000; + ans = 64'hc2f0000007f01ff7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3dffffffff77ffe; + y = 64'hc000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h43effffffff77ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb811814b7ef464dc; + y = 64'hfa807ffffbfffffe; + zrf = 64'h0000000000000000; + ans = 64'h72a20d55d68bb521; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37efffffffe3fffe; + y = 64'h3fe000000000001b; + zrf = 64'h0000000000000000; + ans = 64'h37dfffffffe40034; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc010000001000004; + y = 64'hc0000020001ffffe; + zrf = 64'h0000000000000000; + ans = 64'h4020002001200203; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hca200000400007ff; + y = 64'hc000000000000001; + zrf = 64'h0000000000000000; + ans = 64'h4a30000040000801; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f8fff7ffffefffe; + y = 64'h3fb000000087ffff; + zrf = 64'h0000000000000000; + ans = 64'h3f4fff80010efbbc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fd0008000007fff; + y = 64'hc1c7099afc03c81c; + zrf = 64'h0000000000000000; + ans = 64'hc1a70a5348dc6085; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3f000000fdfffff; + y = 64'h3ffd2e23653e84e9; + zrf = 64'h0000000000000000; + ans = 64'hc3fd2e2382324c05; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf8ffbfff7ffffff; + y = 64'hc00fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3faffbfff7ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3dcff00fffffffff; + y = 64'hb7effff7ffffffff; + zrf = 64'h0000000000000000; + ans = 64'hb5cff00803fbfffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h353957789e95fd88; + y = 64'h381d5abc75937d08; + zrf = 64'h0000000000000000; + ans = 64'h2d673f2091f73528; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f80080000080000; + y = 64'hc00ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbfa008000007fffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb650004000ffffff; + y = 64'hb7e00fffffffefff; + zrf = 64'h0000000000000000; + ans = 64'h2e4010404100effe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4390e6210af918da; + y = 64'h46cfffc400000000; + zrf = 64'h0000000000000000; + ans = 64'h4a70e6015b7b2447; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fefffffffffdfef; + y = 64'h40dffffefbfffffe; + zrf = 64'h0000000000000000; + ans = 64'h40dffffefbffdfee; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401549a16416e287; + y = 64'hc010000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc03549a16416e287; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41fffffc00001fff; + y = 64'hc1fa652249c59e1f; + zrf = 64'h0000000000000000; + ans = 64'hc40a651efd216f4a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hcfeffff6ffffffff; + y = 64'h41ffff9fffffffff; + zrf = 64'h0000000000000000; + ans = 64'hd1ffff97001afffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbcafc000003fffff; + y = 64'hc010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h3ccfc00000400001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7f0000000810000; + y = 64'hc3e2c0625a54229a; + zrf = 64'h0000000000000000; + ans = 64'h3be2c0625aeb51b3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha957fffffffbfffe; + y = 64'h43cfff0000000400; + zrf = 64'h0000000000000000; + ans = 64'had37ff3ffffc031e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha464b1e64cae594f; + y = 64'hc01fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h2494b1e64cae594f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hcedc00003ffffffe; + y = 64'h41c000000000ffff; + zrf = 64'h0000000000000000; + ans = 64'hd0ac00004001bffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01fbeffffffffff; + y = 64'h21600000003fffbf; + zrf = 64'h0000000000000000; + ans = 64'ha18fbf00007efb7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3de59209bb8a564; + y = 64'hbfd0000007fdffff; + zrf = 64'h0000000000000000; + ans = 64'h43be5920aae16a8c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7ffffffe3ffffff; + y = 64'hc01ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h482fffffe3fffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb8a00000000002ff; + y = 64'h43dfdfffffff7ffe; + zrf = 64'h0000000000000000; + ans = 64'hbc8fdfffffff85f6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01e7d66f623cb4c; + y = 64'h787feff7fffffffe; + zrf = 64'h0000000000000000; + ans = 64'hf8ae6e20a34efbdb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47eddf042473ef08; + y = 64'hb7e00000fe000000; + zrf = 64'h0000000000000000; + ans = 64'hbfdddf05fea850ca; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf80100003ffffff; + y = 64'hc340000000000000; + zrf = 64'h0000000000000000; + ans = 64'h42d0100003ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43e0000000008006; + y = 64'h7fdfffffc7fffffe; + zrf = 64'h0000000000000000; + ans = 64'h03cfffffc801000a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01ffff03fffffff; + y = 64'h3fddffffffffff7f; + zrf = 64'h0000000000000000; + ans = 64'hc00dfff13bffff7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7e0000000007ffe; + y = 64'h3cae59ba3a79c7b6; + zrf = 64'h0000000000000000; + ans = 64'hc49e59ba3a7aba80; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3caffff80001ffff; + y = 64'hc340000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbffffff800020000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfbfdffffdfffffe; + y = 64'h1a8fe1ffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h9a5fc21dfe01dffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3811c6a45a8e5bfc; + y = 64'hb7e48cc87315baad; + zrf = 64'h0000000000000000; + ans = 64'hb006d4b6422c9dfb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h36a0000000013ffe; + y = 64'hc170004000000200; + zrf = 64'h0000000000000000; + ans = 64'hb820004000014202; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fefffffffffff07; + y = 64'hc34fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h834fffffffffff06; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fbfffff7fffffef; + y = 64'hc340ffffffffffbf; + zrf = 64'h0000000000000000; + ans = 64'hc310ffffbbffffb5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc003ffffff0000; + y = 64'hc800000037ffffff; + zrf = 64'h0000000000000000; + ans = 64'hc7d00400380cfffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h802fffe008000000; + y = 64'hc3f00001fffffc00; + zrf = 64'h0000000000000000; + ans = 64'h042fffe407fbf901; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3c6c403d1bd7bc9; + y = 64'hc34ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4726c403d1bd7bc8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc80ffe0000001ffe; + y = 64'hbcae9296e1ac0804; + zrf = 64'h0000000000000000; + ans = 64'h44ce90adb83e0bd5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7ffffffffe00003; + y = 64'haa4ffffdffdfffff; + zrf = 64'h0000000000000000; + ans = 64'h225ffffdffc00005; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h674e000000010000; + y = 64'hffe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'ha73e000000010000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f5008000000007f; + y = 64'hffe0d019cec3a5a4; + zrf = 64'h0000000000000000; + ans = 64'hff40d881dbab07fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3effc0100000000; + y = 64'h417fffffff700000; + zrf = 64'h0000000000000000; + ans = 64'hc57ffc00ff7011fb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb811ffff7fffffff; + y = 64'hc0cffff0003fffff; + zrf = 64'h0000000000000000; + ans = 64'h38f1fff680243ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02f8000000007ff; + y = 64'hffe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h001f800000000801; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc040000800000006; + y = 64'hb550003fffffff7e; + zrf = 64'h0000000000000000; + ans = 64'h35a00048001fff84; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffdffffef0000000; + y = 64'h37f400003fffffff; + zrf = 64'h0000000000000000; + ans = 64'hf7e3ffff95fffddf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb000040000001e; + y = 64'h426ffefffe000000; + zrf = 64'h0000000000000000; + ans = 64'h422fff07fdbfffbc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb81fffffc00fffff; + y = 64'hffefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h781fffffc00fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3e72cba2f8f989b2; + y = 64'hc2b007fffffffff7; + zrf = 64'h0000000000000000; + ans = 64'hc132d508ca76066c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h508ffeffbffffffe; + y = 64'h3f00ffffffffbfff; + zrf = 64'h0000000000000000; + ans = 64'h4fa0ff77ddffc000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h48000000027fffff; + y = 64'h4063ffff7fffffff; + zrf = 64'h0000000000000000; + ans = 64'h4873ffff831fffea; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4020017ffffffffe; + y = 64'hffeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h8020017ffffffffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbeb00000000fbfff; + y = 64'h3fefff7ffffffffb; + zrf = 64'h0000000000000000; + ans = 64'hbeafff80001f7f7b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h002f37ebf6c8eaec; + y = 64'hc08be464f4c81c69; + zrf = 64'h0000000000000000; + ans = 64'h80cb36000706e168; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h42dfffff80000100; + y = 64'hc4befffdfffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc7aefffd840008f5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc03ffffc00000100; + y = 64'hfff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h003ffffc00000100; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41c007fffffbfffe; + y = 64'h43bfff77fffffffe; + zrf = 64'h0000000000000000; + ans = 64'h459007bbddfc000e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37ea265023bdd968; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fdfffffffbffffb; + y = 64'h3fefffe000000000; + zrf = 64'h0000000000000000; + ans = 64'h3fdfffdfffc0003c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e001fffffefffe; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41500000803fffff; + y = 64'hbfadc816e2fbf1f7; + zrf = 64'h0000000000000000; + ans = 64'hc10dc817d1b3c968; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfeffdfffffffffc; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e000007fe00000; + y = 64'hbf1fffffffffffe8; + zrf = 64'h0000000000000000; + ans = 64'h411000007fdffff4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00e800000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfb5665a54ce0c12; + y = 64'hbeb0000008007ffe; + zrf = 64'h0000000000000000; + ans = 64'h3e75665a5f81e46d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0300007ffffffef; + y = 64'h3fb9cc340fc29b6a; + zrf = 64'h0000000000000000; + ans = 64'hbff9cc40f5dca32f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1800000ffffffff; + y = 64'hc0bfc00000003fff; + zrf = 64'h0000000000000000; + ans = 64'h424fc001fc003ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc80ffffffffffbfd; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0073e8cf3e13711; + y = 64'h802807fffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h004174b95a25e19a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37efffffffffaffe; + y = 64'h3d7ffffffffe001f; + zrf = 64'h0000000000000000; + ans = 64'h357ffffffffdb01e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7e457789619128b; + y = 64'h40bff3fffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc8b44fd7c8e0c922; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb8004379ab207ab5; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h27cd6fcc24e7623d; + y = 64'h401000000003efff; + zrf = 64'h0000000000000000; + ans = 64'h27ed6fcc24eea0bf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbca000400003ffff; + y = 64'hc3fcb63607d6b0bc; + zrf = 64'h0000000000000000; + ans = 64'h40acb6a8e0b5fda3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hfb48000040000000; + zrf = 64'h0000000000000000; + ans = 64'hbb68000040000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc010200100000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfff863c13828ae4; + y = 64'h3fef8000000003ff; + zrf = 64'h0000000000000000; + ans = 64'hbfff0823233484a8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0409fffffffffff; + y = 64'hbfdfff0003ffffff; + zrf = 64'h0000000000000000; + ans = 64'h40309f7b0213ffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb69ffff000001000; + y = 64'h43dfc00003fffffe; + zrf = 64'h0000000000000000; + ans = 64'hba8fbff024000dde; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40d00000000403ff; + y = 64'h43f0000027ffffff; + zrf = 64'h0000000000000000; + ans = 64'h44d00000280403ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3e40552ef3ea764f; + y = 64'h3c200ffffffffffc; + zrf = 64'h0000000000000000; + ans = 64'h3a70658422de60c2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc0bfffe00000001e; + zrf = 64'h0000000000000000; + ans = 64'h80dfffe00000001e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfffc00000000003; + y = 64'h391001ffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hb91fc3f800000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc0007ffffff000; + y = 64'h381ffffffffe1ffe; + zrf = 64'h0000000000000000; + ans = 64'hb7f0007ffffefff7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc010000ffffdfffe; + y = 64'hbf5fffffff800fff; + zrf = 64'h0000000000000000; + ans = 64'h3f80000fffbe07be; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3a0de408a1808afd; + y = 64'hffd00000000001fb; + zrf = 64'h0000000000000000; + ans = 64'hf9ede408a1808eb0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbca5e76e4f34d231; + y = 64'h0010000000000000; + zrf = 64'h0000000000000000; + ans = 64'hfcc5e76e4f34d231; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfbffdffffffff00; + y = 64'h404000000003fffb; + zrf = 64'h0000000000000000; + ans = 64'hc00ffe000007fe76; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2f40000000000027; + y = 64'hc35f7fffffffffc0; + zrf = 64'h0000000000000000; + ans = 64'hb2af80000000000c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434ffffff7ff7fff; + y = 64'h3fcfff7ffffffeff; + zrf = 64'h0000000000000000; + ans = 64'h432fff7ff7ff9f01; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1000023fffffffe; + y = 64'h0010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h81200023ffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha38000000800ffff; + y = 64'h402ff7faa54f7d56; + zrf = 64'h0000000000000000; + ans = 64'ha3bff7fab54d7a26; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1db54446247aa52; + y = 64'hbfcc001fffffffff; + zrf = 64'h0000000000000000; + ans = 64'h41b7e9d72a43174f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hb80000000000807e; + zrf = 64'h0000000000000000; + ans = 64'hf82000000000807e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1dffbfefffffffe; + y = 64'hc0c0000100000100; + zrf = 64'h0000000000000000; + ans = 64'h42affc00ffbff1fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d00000000003be; + y = 64'h001fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h84000000000003bd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h380154191efc4e28; + y = 64'h381000001ff7ffff; + zrf = 64'h0000000000000000; + ans = 64'h30215419419bd659; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fb6ec4483f565b4; + y = 64'h7fe657f1311c1385; + zrf = 64'h0000000000000000; + ans = 64'h7fb0016e3b91608a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hb28fffffffffe007; + zrf = 64'h0000000000000000; + ans = 64'hf2afffffffffe007; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7ffffffffefffbf; + y = 64'h69a003ffffffefff; + zrf = 64'h0000000000000000; + ans = 64'he1b003fffff7edde; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc038e6a7fa682c54; + y = 64'h4032e353cb91aeb8; + zrf = 64'h0000000000000000; + ans = 64'hc07d6547d23e6845; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403000001fffffdf; + y = 64'h43e2d8971b04eb4e; + zrf = 64'h0000000000000000; + ans = 64'h4422d89740b6195e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc0392c59c8e48f37; + zrf = 64'h0000000000000000; + ans = 64'h80592c59c8e48f37; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3c63320494ceb76c; + y = 64'h4028000020000000; + zrf = 64'h0000000000000000; + ans = 64'h3c9ccb07059a1c4c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h3ca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0201000000007ff; + y = 64'h4288c3935a34e57b; + zrf = 64'h0000000000000000; + ans = 64'hc2b8dc56ed8f26c0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1c00000007fff00; + y = 64'hc01fffffffffef00; + zrf = 64'h0000000000000000; + ans = 64'h41f00000007ff680; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbcafffffffe01ffe; + zrf = 64'h0000000000000000; + ans = 64'hfccfffffffe01ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01f000001ffffff; + y = 64'hc7effffffffe0003; + zrf = 64'h0000000000000000; + ans = 64'h481f000001fe1002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4789b47aa1149764; + y = 64'h3ca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h4439b47aa1149766; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc60fdfffffffffff; + y = 64'ha1c03fffffefffff; + zrf = 64'h0000000000000000; + ans = 64'h27e02fbffff00fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3ce000200000000; + y = 64'h001bfffffffbffff; + zrf = 64'h0000000000000000; + ans = 64'h83fa4001bffc3ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc0000800000001ff; + zrf = 64'h0000000000000000; + ans = 64'h80200800000001ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ff00000001ffefe; + y = 64'h3feffff7fff7fffe; + zrf = 64'h0000000000000000; + ans = 64'h3feffff80037fdeb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf300000000006ff; + y = 64'h3cafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbbf00000000006fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41ff000000000002; + y = 64'hbfcffffffbfdfffe; + zrf = 64'h0000000000000000; + ans = 64'hc1defffffc1e1000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43c3e4c2b39d80cb; + y = 64'h38080000001fffff; + zrf = 64'h0000000000000000; + ans = 64'h3bddd7240d940ab5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h41cfe00001ffffff; + zrf = 64'h0000000000000000; + ans = 64'h01efe00001ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe1ff7fffffffff; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3e0000000006ffe; + y = 64'h3caffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc0a0000000006ffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f6ea4106b65a11; + y = 64'h3ec001ffffffffef; + zrf = 64'h0000000000000000; + ans = 64'h46c6ed1e4ed730c4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h480fffffffffdf00; + y = 64'h4010000000000400; + zrf = 64'h0000000000000000; + ans = 64'h482fffffffffe700; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc1d0000004000fff; + zrf = 64'h0000000000000000; + ans = 64'h81f0000004000fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h69ffffa000000000; + y = 64'hc00ffffefbffffff; + zrf = 64'h0000000000000000; + ans = 64'hea1fff9efc030bff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401000000006ffff; + y = 64'h3fd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3ff000000006ffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1e000ffffffffff; + y = 64'h3812000000003ffe; + zrf = 64'h0000000000000000; + ans = 64'hba02012000004000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h3fd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7fefffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0029ddf3657c97ac; + y = 64'hbb62000400000000; + zrf = 64'h0000000000000000; + ans = 64'hfb9d19b849a90400; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h5c10000001001fff; + zrf = 64'h0000000000000000; + ans = 64'h1c30000001001fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7f02007fffffffe; + y = 64'h402000000100000f; + zrf = 64'h0000000000000000; + ans = 64'hc82020080102008d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h947ffe00000ffffe; + y = 64'h3fd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h945ffe00000fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc04000000047ffff; + y = 64'h3feffffffffc0007; + zrf = 64'h0000000000000000; + ans = 64'hc040000000460002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4030040000200000; + y = 64'h0017055f48beeff5; + zrf = 64'h0000000000000000; + ans = 64'h00570b20a0bf2a70; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41c0000000fdffff; + y = 64'hb81fffffffffffed; + zrf = 64'h0000000000000000; + ans = 64'hb9f0000000fdfff5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3436f8f2b2e7e21; + y = 64'h3fdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc3336f8f2b2e7e20; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3cfffffffff7f7f; + y = 64'h40bab08b43d48199; + zrf = 64'h0000000000000000; + ans = 64'hc49ab08b43d4166b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h3fdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h7fefffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1ffffffdff80000; + y = 64'h402fffffc00000ff; + zrf = 64'h0000000000000000; + ans = 64'hc23fffff9ff8013f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc05ffddfffffffff; + zrf = 64'h0000000000000000; + ans = 64'h807ffddfffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47e00008000ffffe; + y = 64'h3fdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h47d00008000ffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'he8618845e92f15df; + y = 64'hbfce0fd99d7c11ae; + zrf = 64'h0000000000000000; + ans = 64'h68407870a5c4189a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h3fdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h7fefffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbc7000000000ffee; + y = 64'hc1e0001100000000; + zrf = 64'h0000000000000000; + ans = 64'h3e6000110000fff0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0cfffffdfc00000; + y = 64'hc1c0200000000040; + zrf = 64'h0000000000000000; + ans = 64'h42a01fffefbfc040; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h3fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h911f7ffffffffff0; + y = 64'h3f90ca8f09d1be5d; + zrf = 64'h0000000000000000; + ans = 64'h90c08764cdaa775b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h3fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02200003ffffffe; + y = 64'hc1d1ffffbffffffe; + zrf = 64'h0000000000000000; + ans = 64'h42043ffffffffefc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hffe7ffffffffffee; + zrf = 64'h0000000000000000; + ans = 64'hc007ffffffffffee; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe0000023ffffff; + y = 64'hc06ffc000000000e; + zrf = 64'h0000000000000000; + ans = 64'h405ffc0047f7000d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfb2001fffffffff; + y = 64'h3fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbfa2002000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4269afb6393490b7; + y = 64'hba62478d7e1c3e1c; + zrf = 64'h0000000000000000; + ans = 64'hbcdd588bdfe3e666; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc040000000007fff; + y = 64'hc3b2a6c91c557f56; + zrf = 64'h0000000000000000; + ans = 64'h4402a6c91c56148c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc06007f7fffffffe; + y = 64'hddcfff9ffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h5e4007c7e817fffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc57ea73c304d054d; + y = 64'h3fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc57ea73c304d054c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43c086a10b8210ae; + y = 64'hbf01ffffbfffffff; + zrf = 64'h0000000000000000; + ans = 64'hc2d29774ead7ce94; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h3fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4343a987a0dad4a5; + y = 64'h40caa5c07b2b6187; + zrf = 64'h0000000000000000; + ans = 64'h44205f969ae3434d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h40b007ffffffff7e; + zrf = 64'h0000000000000000; + ans = 64'h00d007ffffffff7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7e0100000000040; + y = 64'hbff0002000000001; + zrf = 64'h0000000000000000; + ans = 64'h47e0102020000042; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4403bb97ce60574a; + y = 64'h3feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4403bb97ce605749; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3a0c0007fffffffe; + y = 64'h381f800000fffffe; + zrf = 64'h0000000000000000; + ans = 64'h323b9007e0e0003d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41ffffffff003fff; + y = 64'hc3b0000007ffffee; + zrf = 64'h0000000000000000; + ans = 64'hc5c0000007801fed; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40232b23c9417cd7; + y = 64'hba5000000000087e; + zrf = 64'h0000000000000000; + ans = 64'hba832b23c9418703; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc05fbffbffffffff; + y = 64'h3ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc05fbffbffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc0000080000800; + y = 64'hb80ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h37e00000800007ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h3ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0010000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3e4003fffffffff; + y = 64'hffd0007ffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h03c400e001fffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0fbffffffffffef; + y = 64'hc3cf100000000000; + zrf = 64'h0000000000000000; + ans = 64'h44db2dfffffffff0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4339ff8b8ee34977; + y = 64'h3ff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h4339ff8b8ee34979; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fefffffffffffff; + y = 64'h37f9fc8b9cbef88a; + zrf = 64'h0000000000000000; + ans = 64'h37f9fc8b9cbef88a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h3ff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0010000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h21900001dfffffff; + y = 64'hbf20000017fffffe; + zrf = 64'h0000000000000000; + ans = 64'ha0c00001f80002cc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h41e000003fffffff; + zrf = 64'h0000000000000000; + ans = 64'h020000003fffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hbf5369d33862aaac; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0300001fffffffa; + y = 64'h3fffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc0400001fffffff9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc06000400000007f; + y = 64'hc1d00000fff7ffff; + zrf = 64'h0000000000000000; + ans = 64'h42400040fffc005f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h3fffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h001fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfdffffffff000fe; + y = 64'h43dffdfffdffffff; + zrf = 64'h0000000000000000; + ans = 64'hc3cffdfffdf001fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h41dffbffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h01fffbffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0a6000000000000; + y = 64'h43fefffffffff7ff; + zrf = 64'h0000000000000000; + ans = 64'hc4b54ffffffffa7f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbff60484a5536536; + y = 64'h3ffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc0060484a5536534; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0029954d0f0df5b3; + y = 64'h41e00000000003ff; + zrf = 64'h0000000000000000; + ans = 64'h0219954d0f0dfc17; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h3ffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h001ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc01000081fffffff; + y = 64'h308ffdffbfffffff; + zrf = 64'h0000000000000000; + ans = 64'hb0affe0ffefbdf7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc03fbffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h805fbffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2fb00ffffffdffff; + y = 64'hbd50000001fffff6; + zrf = 64'h0000000000000000; + ans = 64'had10100001fffff4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7effffffffffc1f; + y = 64'h4000000000000000; + zrf = 64'h0000000000000000; + ans = 64'hb7fffffffffffc1f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfb83dc63477cd3d; + y = 64'h4070007ffff80000; + zrf = 64'h0000000000000000; + ans = 64'hc0383e88229d5218; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0020000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcffffff8000100; + y = 64'hbfc000000003e000; + zrf = 64'h0000000000000000; + ans = 64'h3f9ffffff807c100; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h435f000003ffffff; + zrf = 64'h0000000000000000; + ans = 64'h037f000003ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb810000020000001; + y = 64'h47ffdfffffffff80; + zrf = 64'h0000000000000000; + ans = 64'hc01fe0003fbfff81; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h802fffefefffffff; + y = 64'h4000000000000001; + zrf = 64'h0000000000000000; + ans = 64'h803fffeff0000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fd0000ffbfffffe; + y = 64'h3fbbfffffdffffff; + zrf = 64'h0000000000000000; + ans = 64'h3f9c001bf6fffdfc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4000000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0020000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43ec064c6152fc63; + y = 64'hcd3fbffffff7fffe; + zrf = 64'h0000000000000000; + ans = 64'hd13bce3fc88954d5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3c3e54c4d8a3cf09; + y = 64'h415ffffffffdffe0; + zrf = 64'h0000000000000000; + ans = 64'h3dae54c4d8a1e99f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4030fffffffeffff; + y = 64'h400fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h4050fffffffeffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402efffffffffff7; + y = 64'hbcafffc00001ffff; + zrf = 64'h0000000000000000; + ans = 64'hbceeffc20001eff6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h400fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h002fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1a000000001fdff; + y = 64'hc7e29e108929df66; + zrf = 64'h0000000000000000; + ans = 64'h49929e10892c30d4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hffeffff800007fff; + zrf = 64'h0000000000000000; + ans = 64'hc00ffff800007fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hdff0007f7fffffff; + y = 64'h37fffffffffff77f; + zrf = 64'h0000000000000000; + ans = 64'hd800007f7ffffbbe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfb0000000007f7f; + y = 64'h400ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbfd0000000007f7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3e44faf4fcc6d94; + y = 64'hb80fec0000000000; + zrf = 64'h0000000000000000; + ans = 64'h3c0442fd823a8dd0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h400ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h002ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47e0004008000000; + y = 64'hbfb85853044ed3e1; + zrf = 64'h0000000000000000; + ans = 64'hc7a858b471c70e9e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hb06003ffffffffde; + zrf = 64'h0000000000000000; + ans = 64'hf08003ffffffffde; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37e7518d337cc25b; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd12000ffffefffff; + y = 64'h4010000000000000; + zrf = 64'h0000000000000000; + ans = 64'hd14000ffffefffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4490000003fffefe; + y = 64'h4136bf27884c5b05; + zrf = 64'h0000000000000000; + ans = 64'h45d6bf278dfc2379; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0030000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0221db466eedfb9; + y = 64'hc3c0e83093586003; + zrf = 64'h0000000000000000; + ans = 64'h43f3249a1eb595ba; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4020000000004400; + zrf = 64'h0000000000000000; + ans = 64'h0040000000004400; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4022ac23df608ace; + y = 64'h3a2cddcec5bdb7f6; + zrf = 64'h0000000000000000; + ans = 64'h3a60d80ce2bc8b14; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fbffffffff60000; + y = 64'h4010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h3fdffffffff60002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fefffff80000400; + y = 64'h434615f1f239d053; + zrf = 64'h0000000000000000; + ans = 64'h434615f199e20b4d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0030000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37ffe5d085a3877b; + y = 64'hc000800000003fff; + zrf = 64'h0000000000000000; + ans = 64'hb810727f84e891a6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc80ffffe00000006; + zrf = 64'h0000000000000000; + ans = 64'h882ffffe00000006; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbc10001fffffefff; + y = 64'h3ccd2ded70b56965; + zrf = 64'h0000000000000000; + ans = 64'hb8ed2e27cc902da0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf700000000100ff; + y = 64'h401fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbfa00000000100fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1f00207fffffffe; + y = 64'hc1e03effffffffff; + zrf = 64'h0000000000000000; + ans = 64'h43e0410fff7ffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h401fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h003fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h403fffffff780000; + y = 64'hb400023fffffffff; + zrf = 64'h0000000000000000; + ans = 64'hb450023fffbbf66f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47ffffe000020000; + y = 64'h3fe5d02ba77755f7; + zrf = 64'h0000000000000000; + ans = 64'h47f5d015d74d0b83; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43ef0000000000ff; + y = 64'h401ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h441f0000000000fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca0384aaa23be04; + y = 64'hb940005fffffffff; + zrf = 64'h0000000000000000; + ans = 64'hb5f038abfbe3bad9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h401ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h003ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40327ad957b1f5df; + y = 64'hc000006000000000; + zrf = 64'h0000000000000000; + ans = 64'hc0427b4838ca040a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hb806f9c81cbb15f4; + zrf = 64'h0000000000000000; + ans = 64'hf826f9c81cbb15f4; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37feffffffffffff; + y = 64'h47ef8000000fffff; + zrf = 64'h0000000000000000; + ans = 64'h3ffe8400000f7fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h404ffefffffff000; + y = 64'h4340000000000000; + zrf = 64'h0000000000000000; + ans = 64'h439ffefffffff000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc0001000200000; + y = 64'hb100003ffffffff8; + zrf = 64'h0000000000000000; + ans = 64'hb0d0005000600077; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4340000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0360000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffdb3470a5e3dd1b; + y = 64'h480f7fffffffdfff; + zrf = 64'h0000000000000000; + ans = 64'h87fac79ee34c3271; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbca0000080003fff; + zrf = 64'h0000000000000000; + ans = 64'hfcc0000080003fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3cce0ccf7d8e4a61; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1d00800ffffffff; + y = 64'h4340000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc520080100000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f000fffffdfffe; + y = 64'h404effffffdfffff; + zrf = 64'h0000000000000000; + ans = 64'h424f01efffdc1dfc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4340000000000001; + zrf = 64'h0000000000000000; + ans = 64'h0360000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb80f800001fffffe; + y = 64'h44e00000ffff7fff; + zrf = 64'h0000000000000000; + ans = 64'hbcff8001f9ff041c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401ffffbdfffffff; + y = 64'h43d0000000000300; + zrf = 64'h0000000000000000; + ans = 64'h43fffffbe00005ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3c0000017fffffe; + y = 64'h434fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc720000017fffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1feffffff7ffffe; + y = 64'h1af693ab1ab44f36; + zrf = 64'h0000000000000000; + ans = 64'h9d05df0dc1845e0e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h434fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h036fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb20643cc9d9a536b; + y = 64'h41e49085b10e049f; + zrf = 64'h0000000000000000; + ans = 64'hb3fc9ddc0081bc98; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4009ad651462b44a; + zrf = 64'h0000000000000000; + ans = 64'h0029ad651462b44a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41dff0000000003e; + y = 64'h43effff7ffffffe0; + zrf = 64'h0000000000000000; + ans = 64'h45dfeff80400001f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc09ffff000004000; + y = 64'h434ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc3fffff000003ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fd0200000000800; + y = 64'hdc0ffe0002000000; + zrf = 64'h0000000000000000; + ans = 64'hdbf01efe010207ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h434ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h036ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe400000080001fe; + y = 64'h14f0010000000ffe; + zrf = 64'h0000000000000000; + ans = 64'h93400100080091fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h436eff7fffffffff; + zrf = 64'h0000000000000000; + ans = 64'h038eff7fffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfd883177e5f1999; + y = 64'h43e4000000000003; + zrf = 64'h0000000000000000; + ans = 64'hc3cea3dd5df6e003; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3e0000000800003; + y = 64'h7fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h83d0000000800003; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h405ffffffffffb80; + y = 64'h8015e1d67420ea5d; + zrf = 64'h0000000000000000; + ans = 64'h8085e1d67420e749; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7fe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h4000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fd1000fffffffff; + y = 64'h5d310000000000ff; + zrf = 64'h0000000000000000; + ans = 64'h5d1210110000010e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc1efffdffbffffff; + zrf = 64'h0000000000000000; + ans = 64'h820fffdffbffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb8a008000000007f; + y = 64'hc01ffffffc00001e; + zrf = 64'h0000000000000000; + ans = 64'h38d007fffdff008f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41ffffdfffff8000; + y = 64'h7fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h01efffdfffff8002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7fe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h4000000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc340708fc64cbb8d; + y = 64'h802fc64018f098e6; + zrf = 64'h0000000000000000; + ans = 64'h038052e4afa4e3ab; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfffffbffff7ffff; + y = 64'hbd400000200000ff; + zrf = 64'h0000000000000000; + ans = 64'h3d4fffc03ff781fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02008d3baee2879; + y = 64'h7fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h802008d3baee2878; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7fefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h400fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h400ffe00003fffff; + y = 64'hc1e507e54ddba03c; + zrf = 64'h0000000000000000; + ans = 64'hc2050694cfb0d24b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4edffffffefffeff; + zrf = 64'h0000000000000000; + ans = 64'h0efffffffefffeff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc15000400ffffffe; + y = 64'hc0500007fffdffff; + zrf = 64'h0000000000000000; + ans = 64'h41b00048101e07f5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc6bb60a15b9ca674; + y = 64'h7feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h86bb60a15b9ca672; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb80a16ad02c87cd3; + y = 64'h380fffffffffe7fe; + zrf = 64'h0000000000000000; + ans = 64'hb02a16ad02c86940; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7feffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h400ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc00f7ffffffeffff; + y = 64'hf7efefffffffffbe; + zrf = 64'h0000000000000000; + ans = 64'h780f703fffff003f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h40dffffffffff806; + zrf = 64'h0000000000000000; + ans = 64'h00fffffffffff806; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h32a89b054aa778be; + y = 64'h38ee00000000000e; + zrf = 64'h0000000000000000; + ans = 64'h2ba71154f5fd013d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'haa6f0618039cfa82; + y = 64'h7ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hea6f0618039cfa82; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40f007ff80000000; + y = 64'h47fffff07fffffff; + zrf = 64'h0000000000000000; + ans = 64'h490007f7bc203e00; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7ff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h4010000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4020000000020006; + y = 64'hbb62b1da7ab47675; + zrf = 64'h0000000000000000; + ans = 64'hbb92b1da7ab6ccb7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc482ada40e5d82; + y = 64'hbec10c5904e0bbb5; + zrf = 64'h0000000000000000; + ans = 64'hbe95daac9db0f037; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f0fffffffffffb; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc023b435d252ab57; + y = 64'hc0efffffffbffffe; + zrf = 64'h0000000000000000; + ans = 64'h4123b435d22b42eb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37ed147aa1f43557; + y = 64'hbed00000003fffc0; + zrf = 64'h0000000000000000; + ans = 64'hb6cd147aa26886cd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h84fffbffffff0000; + zrf = 64'h0000000000000000; + ans = 64'hc51ffbffffff0000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h42a0010000000000; + y = 64'hc8000000001001ff; + zrf = 64'h0000000000000000; + ans = 64'hcab00100001002ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37f00000003ffbfe; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc67fefff7ffffffe; + y = 64'h3eac1d26eec725e8; + zrf = 64'h0000000000000000; + ans = 64'hc53c0f17eadb2698; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fdff7fffffdfffe; + y = 64'hbe603755dfca2a65; + zrf = 64'h0000000000000000; + ans = 64'hfe5033480a513464; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h41ffffffffbfff7f; + zrf = 64'h0000000000000000; + ans = 64'h021fffffffbfff7f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47fc27499562c193; + y = 64'hbfd7fffffffff7ff; + zrf = 64'h0000000000000000; + ans = 64'hc7e51d77300a0a23; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbffffe000000fffe; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401ffc0000000002; + y = 64'h43cfff800000003e; + zrf = 64'h0000000000000000; + ans = 64'h43fffb8010000040; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43f7ffffffffdfff; + y = 64'hffed3e9e1f93387c; + zrf = 64'h0000000000000000; + ans = 64'h83f5eef697ae4d1d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h403fff8001000000; + zrf = 64'h0000000000000000; + ans = 64'h005fff8001000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fd004000000000f; + y = 64'h37f6cfd4cb442f48; + zrf = 64'h0000000000000000; + ans = 64'h37d6d588c077006a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf80001002000000; + y = 64'h8000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37e00000004007fe; + y = 64'hc0036ff67812a280; + zrf = 64'h0000000000000000; + ans = 64'hb7f36ff678606c0f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h8000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h48070394b74ce3a4; + y = 64'h480efc79a696d4b9; + zrf = 64'h0000000000000000; + ans = 64'h502648ef1c54f542; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h8020000037fffffe; + zrf = 64'h0000000000000000; + ans = 64'hc040000037fffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbc3f7fffffffffbf; + y = 64'hbca03ff7ffffffff; + zrf = 64'h0000000000000000; + ans = 64'h38effdf03fffffbd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb677ffffffffeffe; + y = 64'h415ffffffdf7fffe; + zrf = 64'h0000000000000000; + ans = 64'hb7e7fffffe79effc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc0fffffffdfffff6; + zrf = 64'h0000000000000000; + ans = 64'h811ffffffdfffff6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02fffffdffffbff; + y = 64'h3fd00000000003ff; + zrf = 64'h0000000000000000; + ans = 64'hc00fffffe00003fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0300000ffeffffe; + y = 64'h3fffff8000001ffe; + zrf = 64'h0000000000000000; + ans = 64'hc03fff81ffd8207a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hf98fff8007ffffff; + y = 64'h3fe040003fffffff; + zrf = 64'h0000000000000000; + ans = 64'hf9803fbf440f000e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7e80001ffffffff; + y = 64'hbff0000000007ffe; + zrf = 64'h0000000000000000; + ans = 64'h47e800020000bffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d00001000001ff; + y = 64'hb7f60cb3edb38762; + zrf = 64'h0000000000000000; + ans = 64'h3bd60cb54e7ec8fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h546000000004003f; + y = 64'h400663ca353eb4a4; + zrf = 64'h0000000000000000; + ans = 64'h547663ca35444def; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfeffffffffdffff; + y = 64'hc3c800003ffffffe; + zrf = 64'h0000000000000000; + ans = 64'h43c800003ffe7ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3c000000100000f; + y = 64'h8010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h03e000000100000f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43c86b97bdb4310f; + y = 64'h2a1104f9c0a750d2; + zrf = 64'h0000000000000000; + ans = 64'h2de9f9e94ff2d4b0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h8010000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc030000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfff000000000100; + y = 64'hbff27243af555c1b; + zrf = 64'h0000000000000000; + ans = 64'h4001deb191dab1ce; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hcf10008040000000; + zrf = 64'h0000000000000000; + ans = 64'h8f30008040000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcf800000000000; + y = 64'hbfc000000ffffffd; + zrf = 64'h0000000000000000; + ans = 64'h3f9f80001f7ffffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbff0000000020fff; + y = 64'hbecc54fdffa82e36; + zrf = 64'h0000000000000000; + ans = 64'h3ecc54fdffabd529; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h8010000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc030000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h1590000080200000; + y = 64'he290003ff7ffffff; + zrf = 64'h0000000000000000; + ans = 64'hb83000407822003e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h48000000040007ff; + zrf = 64'h0000000000000000; + ans = 64'h08200000040007ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h434fffffffff7dfe; + y = 64'h7fe0000000000043; + zrf = 64'h0000000000000000; + ans = 64'h033fffffffff7e84; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h407ffffffff7fff7; + y = 64'h801fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h80affffffff7fff6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47fe3fffffffffff; + y = 64'h3fe12dc9c92e02e4; + zrf = 64'h0000000000000000; + ans = 64'h47f03d48c02d7ebb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h801fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc03fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb810000000003fe0; + y = 64'h9f90000100000008; + zrf = 64'h0000000000000000; + ans = 64'h17b0000100003fe9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h46abd96de2786819; + zrf = 64'h0000000000000000; + ans = 64'h06cbd96de2786819; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h60d92d2aa25c2d87; + y = 64'hbfbffe001fffffff; + zrf = 64'h0000000000000000; + ans = 64'he0a92b97e8df3265; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43c0007fffdfffff; + y = 64'h801ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h83f0007fffdffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfd00000407ffffe; + y = 64'hd001000000800000; + zrf = 64'h0000000000000000; + ans = 64'h4fe1000045080000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h801ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc03ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4382a3880af103a1; + y = 64'h801fffffffc08000; + zrf = 64'h0000000000000000; + ans = 64'h83b2a3880acc071f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4017ffffefffffff; + zrf = 64'h0000000000000000; + ans = 64'h0037ffffefffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hefd000800000fffe; + y = 64'h37e34d3325f0bc2f; + zrf = 64'h0000000000000000; + ans = 64'he7c34dcd8f8b2085; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hfcc0000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h413effffffffffff; + y = 64'h3ffffffdfffffffc; + zrf = 64'h0000000000000000; + ans = 64'h414efffe0ffffffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc04fff0000007ffe; + zrf = 64'h0000000000000000; + ans = 64'h806fff0000007ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fbf800000000002; + y = 64'hbfb892c300fae7f4; + zrf = 64'h0000000000000000; + ans = 64'hbf883077f4f6fc55; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc7efffffdffffbff; + y = 64'hbca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h449fffffdffffc01; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41effffffff00002; + y = 64'hc013ffffe0000000; + zrf = 64'h0000000000000000; + ans = 64'hc213ffffdff60001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hfcc0000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0272f86e7296ddc; + y = 64'hc00fffffe1fffffe; + zrf = 64'h0000000000000000; + ans = 64'h40472f86d16cdf62; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h480ffff000000080; + zrf = 64'h0000000000000000; + ans = 64'h082ffff000000080; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc440000800000003; + y = 64'h402ffffffdfffffd; + zrf = 64'h0000000000000000; + ans = 64'hc4800007feffff81; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41f000000ffffffe; + y = 64'hbcafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbeb000000ffffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc21d2b9577b04a48; + y = 64'h3caffffeff7fffff; + zrf = 64'h0000000000000000; + ans = 64'hbedd2b948ddef033; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbcafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hfccfffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h46600000003ffffb; + y = 64'hc7f03ffdfffffffe; + zrf = 64'h0000000000000000; + ans = 64'hce603ffe0040fff0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc11ff00000000003; + zrf = 64'h0000000000000000; + ans = 64'h813ff00000000003; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h404ffffffe001fff; + y = 64'h3f183477e56b4fdb; + zrf = 64'h0000000000000000; + ans = 64'h3f783477e3e82091; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fe53580e079043e; + y = 64'hbcaffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hfca53580e079043c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fcf000000400000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbcaffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hfccffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfbffffffffff7fb; + y = 64'h3f67c662a30b77d9; + zrf = 64'h0000000000000000; + ans = 64'hbf37c662a30b71e3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbfff9793a2cfab94; + zrf = 64'h0000000000000000; + ans = 64'h801f9793a2cfab94; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc2a602769741e0f4; + y = 64'h41df7ffffffff800; + zrf = 64'h0000000000000000; + ans = 64'hc495aa6cbce4d3ef; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47f28f0812269bb5; + y = 64'hbfd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc7d28f0812269bb5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4171ffffefffffff; + y = 64'hbff0c7c76598ebc1; + zrf = 64'h0000000000000000; + ans = 64'hc172e0c0418441d2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbfd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hffefffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hbcaffffbfffffff7; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc340000000400020; + zrf = 64'h0000000000000000; + ans = 64'h8360000000400020; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb81ffffffdffffbf; + y = 64'h4168000000000007; + zrf = 64'h0000000000000000; + ans = 64'hb997fffffe7fffd6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43d2000000000002; + y = 64'hbfd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc3b2000000000003; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40800041ffffffff; + y = 64'hc3ced81c55396ab6; + zrf = 64'h0000000000000000; + ans = 64'hc45ed89b90ae4a40; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbfd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hffefffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4003069a0d38953d; + y = 64'h40a077ffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h40b3954b909bbd9c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h43f20ac9374433ed; + zrf = 64'h0000000000000000; + ans = 64'h04120ac9374433ed; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4010618f5a6ec8f0; + y = 64'hc3ddaa7859723ef0; + zrf = 64'h0000000000000000; + ans = 64'hc3fe5f5b9e50707d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0ffffffffeffffe; + y = 64'hbfdfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h40efffffffeffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40100000020fffff; + y = 64'h3530003bffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3550003c021007ba; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ffffefeffffffff; + y = 64'h47f0000040000fff; + zrf = 64'h0000000000000000; + ans = 64'h47fffeff7ffc1bfc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc3e0000100004000; + zrf = 64'h0000000000000000; + ans = 64'h8400000100004000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbee07fffffbffffe; + y = 64'hc008000000000ffe; + zrf = 64'h0000000000000000; + ans = 64'h3ef8bfffffa0107b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffeffffffc002000; + y = 64'hbfdffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h7fdffffffc001fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h441ed7f6a4c867c6; + y = 64'hc00fbffffffbfffe; + zrf = 64'h0000000000000000; + ans = 64'hc43e9a46b77afbf5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc0000000007fef; + y = 64'h1980000002000007; + zrf = 64'h0000000000000000; + ans = 64'h1950000002007ff7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4007810b8f74ac1d; + y = 64'hbfc856fb871d13a1; + zrf = 64'h0000000000000000; + ans = 64'hbfe1e0ac3a197c02; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h5677fffffffeffff; + y = 64'hbfe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hd667fffffffeffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h6f7000000001fdff; + y = 64'h1510010000000fff; + zrf = 64'h0000000000000000; + ans = 64'h4490010000020e1e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbfe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h8000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0000003ffffe000; + y = 64'hbfd1684c1780a28e; + zrf = 64'h0000000000000000; + ans = 64'h3fe168507193859e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h47fff3c7f4f5dd0a; + zrf = 64'h0000000000000000; + ans = 64'h081ff3c7f4f5dd0a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h80204000000ffffe; + y = 64'h381fffffff81fffe; + zrf = 64'h0000000000000000; + ans = 64'hf8503fffffd003fc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h95d00007ffffffff; + y = 64'hbfe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h15c0000800000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37f0800000008000; + y = 64'h41c00000007ff800; + zrf = 64'h0000000000000000; + ans = 64'h39c08000008477c1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbfe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h8000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h413ffdffffdffffe; + y = 64'h3fbc6dc2b14b6dd5; + zrf = 64'h0000000000000000; + ans = 64'h410c6bfbd503eb5a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hde70000600000000; + zrf = 64'h0000000000000000; + ans = 64'h9e90000600000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37f002000000000f; + y = 64'hb1effcfffffffffe; + zrf = 64'h0000000000000000; + ans = 64'ha9f0007fd000000d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbe4bd57690ea5405; + y = 64'hbfefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h3e4bd57690ea5405; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfcffdffff000000; + y = 64'hb7e44dc0093df58b; + zrf = 64'h0000000000000000; + ans = 64'h37c44c7b2c9af3ac; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40100000083fffff; + y = 64'h3c0dcff9f723ff06; + zrf = 64'h0000000000000000; + ans = 64'h3c2dcffa06833be8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h403ffff800000003; + zrf = 64'h0000000000000000; + ans = 64'h005ffff800000003; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3dffc0000000006; + y = 64'h002ffffeffffffff; + zrf = 64'h0000000000000000; + ans = 64'h841ffbff00200005; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca01ffffffffffc; + y = 64'hbf8ffbffe0000000; + zrf = 64'h0000000000000000; + ans = 64'hbc401dfbefdffffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43ebffefffffffff; + y = 64'h401fffff80003fff; + zrf = 64'h0000000000000000; + ans = 64'h441bffef900077ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h47f000021fffffff; + zrf = 64'h0000000000000000; + ans = 64'h081000021fffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4040000040200000; + y = 64'hc030003ffffff7ff; + zrf = 64'h0000000000000000; + ans = 64'hc08000404020f87e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hcc3050bc013d7cd7; + y = 64'hbff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h4c3050bc013d7cd7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbca371e443fc6409; + y = 64'hc3f0000004000003; + zrf = 64'h0000000000000000; + ans = 64'h40a371e448d8dd1e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h8010000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3cd49ee0d5dc5dad; + y = 64'h5dd2718355e26898; + zrf = 64'h0000000000000000; + ans = 64'h5ab7c50847fefa19; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h46603fffe0000000; + zrf = 64'h0000000000000000; + ans = 64'h06803fffe0000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3dffffffffffffe; + y = 64'h802fffffc8000000; + zrf = 64'h0000000000000000; + ans = 64'h041fffffc7ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h401fff7dffffffff; + y = 64'hbff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc01fff7e00000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3e00000400003ff; + y = 64'hc041cb2ba6fa7627; + zrf = 64'h0000000000000000; + ans = 64'h4431cb2bee272935; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbff0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h8010000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1d0003ff8000000; + y = 64'hf9f000000010003f; + zrf = 64'h0000000000000000; + ans = 64'h7bd0003ff810007f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h87fff0000000fffe; + zrf = 64'h0000000000000000; + ans = 64'hc81ff0000000fffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h308fffffffffffe7; + y = 64'hbc4fffffffefffbf; + zrf = 64'h0000000000000000; + ans = 64'hacefffffffefffa6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43c0003ffffffffc; + y = 64'hbfffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc3d0003ffffffffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc030007ffffefffe; + y = 64'h37f1c5927efed20d; + zrf = 64'h0000000000000000; + ans = 64'hb831c620ab91ada8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbfffffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h801fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'h3111ffffffffbfff; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h43c8000000ffffff; + zrf = 64'h0000000000000000; + ans = 64'h03e8000000ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffe84f73fb8db6fe; + y = 64'hbc1fffffc0000000; + zrf = 64'h0000000000000000; + ans = 64'h7c184f73caeecf07; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47e0000000010080; + y = 64'hbffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc7f000000001007e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc04fffffbffffffb; + y = 64'h3c7f7ffffffffdfe; + zrf = 64'h0000000000000000; + ans = 64'hbcdf7fffc0fffdf9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hbffffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h801ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37f000003fffffde; + y = 64'hc3400000000ffe00; + zrf = 64'h0000000000000000; + ans = 64'hbb400000400ffdde; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc3fb5c5330475c41; + zrf = 64'h0000000000000000; + ans = 64'h841b5c5330475c41; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h472dfffffeffffff; + y = 64'hc3448df0813db0ec; + zrf = 64'h0000000000000000; + ans = 64'hca83451178856658; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca36b7814b2d456; + y = 64'hc000000000000000; + zrf = 64'h0000000000000000; + ans = 64'hbcb36b7814b2d456; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha4ffffefdfffffff; + y = 64'hc3e0020000000fff; + zrf = 64'h0000000000000000; + ans = 64'h28f001f7eefe0fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h8020000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3feffffffffffbdf; + y = 64'hbff0077965f9c355; + zrf = 64'h0000000000000000; + ans = 64'hbff0077965f9c143; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc11ffff7fff7ffff; + y = 64'hc1adeb3cfb8c4374; + zrf = 64'h0000000000000000; + ans = 64'h42ddeb3580b589c1; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7feefffe00000000; + y = 64'hc000000000000001; + zrf = 64'h0000000000000000; + ans = 64'hffefffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43effbfffffff7ff; + y = 64'h7fefffffff801ffe; + zrf = 64'h0000000000000000; + ans = 64'h03effbffff8027fa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc000000000000001; + zrf = 64'h0000000000000000; + ans = 64'h8020000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h32100007efffffff; + y = 64'hc78ffffff0000007; + zrf = 64'h0000000000000000; + ans = 64'hb9b00007e7fffc0a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hb7efffffbffff7fe; + zrf = 64'h0000000000000000; + ans = 64'hf80fffffbffff7fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbce98537abc2f82a; + y = 64'h41e00003ffdffffe; + zrf = 64'h0000000000000000; + ans = 64'hbed9853e0cddd8a8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffefffeffffdffff; + y = 64'hc00fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f8007ffffffffff; + y = 64'hc3f000401fffffff; + zrf = 64'h0000000000000000; + ans = 64'hc3800840400ffffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc00fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h802fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d4f4adbfb6a5ea; + y = 64'h3e700000000000c0; + zrf = 64'h0000000000000000; + ans = 64'hc254f4adbfb6a6e5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h408000000010ffff; + zrf = 64'h0000000000000000; + ans = 64'h00a000000010ffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc015834380f2b995; + y = 64'h3f9fff0000000400; + zrf = 64'h0000000000000000; + ans = 64'hbfc5829766d6b4af; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3faffeffffffc000; + y = 64'hc00ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hbfcffeffffffbffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3effffffffffef7; + y = 64'hbf40445cd52bc22b; + zrf = 64'h0000000000000000; + ans = 64'h4340445cd52bc1a5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc00ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h802ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc340004000007fff; + y = 64'h4070004000000400; + zrf = 64'h0000000000000000; + ans = 64'hc3c0008001008401; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'he0d20000000003ff; + y = 64'hc34000002ffffffe; + zrf = 64'h0000000000000000; + ans = 64'h64220000360003fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h38185f449f6bf14d; + y = 64'hc010000000000000; + zrf = 64'h0000000000000000; + ans = 64'hb8385f449f6bf14d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc341fffffffffffc; + y = 64'hbec000003ffbffff; + zrf = 64'h0000000000000000; + ans = 64'h4212000047fb7ffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h8030000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc23fff7ffffffbff; + y = 64'hc8710000000000ff; + zrf = 64'h0000000000000000; + ans = 64'h4ac0ffbbfffffedf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h41dfffffc0001000; + zrf = 64'h0000000000000000; + ans = 64'h01ffffffc0001000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc8000003fffffff6; + y = 64'h7fdffffffff7dffe; + zrf = 64'h0000000000000000; + ans = 64'h87f00003fffbeff3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h32d3e44c3072f211; + y = 64'hc010000000000001; + zrf = 64'h0000000000000000; + ans = 64'hb2f3e44c3072f212; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3efffdffeffffff; + y = 64'hc22fffffffffefbf; + zrf = 64'h0000000000000000; + ans = 64'h462fffdffeffefbf; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc010000000000001; + zrf = 64'h0000000000000000; + ans = 64'h8030000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40700200000001fe; + y = 64'hbdffffffe0000040; + zrf = 64'h0000000000000000; + ans = 64'hbe8001ffeffe021e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h802ffbffc0000000; + zrf = 64'h0000000000000000; + ans = 64'hc04ffbffc0000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3c6fbfffffdfffff; + y = 64'h40300000009fffff; + zrf = 64'h0000000000000000; + ans = 64'h3cafc000011d7ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h001000003fffffff; + y = 64'hc01fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h804000003ffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb80002000000007f; + y = 64'hc7e000000007fbfe; + zrf = 64'h0000000000000000; + ans = 64'h3ff002000007fd7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc01fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h803fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0204000000fffff; + y = 64'h406ffffffefffdfe; + zrf = 64'h0000000000000000; + ans = 64'hc0a03fffff8dfef9; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4809f4b95e8684c3; + y = 64'hb5a0000000000380; + zrf = 64'h0000000000000000; + ans = 64'hbdb9f4b95e868a70; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1f0020000001000; + y = 64'hc01ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4220020000000fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc58fff8000010000; + y = 64'h3ff000080000007f; + zrf = 64'h0000000000000000; + ans = 64'hc58fff8fffc100fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc01ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h803ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfefdfbffffffffe; + y = 64'h3fb0101fffffffff; + zrf = 64'h0000000000000000; + ans = 64'hbfafffdf7f7ffffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7fdffffbfbfffffe; + zrf = 64'h0000000000000000; + ans = 64'h3ffffffbfbfffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3caffffffc00000e; + y = 64'hffefffffffe0007f; + zrf = 64'h0000000000000000; + ans = 64'hfcaffffffbe0008d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc34e3db1b794999c; + y = 64'hc340000000000000; + zrf = 64'h0000000000000000; + ans = 64'h469e3db1b794999c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41e010000000001f; + y = 64'hc5b04000000fffff; + zrf = 64'h0000000000000000; + ans = 64'hc7a050400010101e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc340000000000000; + zrf = 64'h0000000000000000; + ans = 64'h8360000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fd00000001fffff; + y = 64'hc1c0010000000000; + zrf = 64'h0000000000000000; + ans = 64'h81a00100002001fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41e43c7afaf93429; + y = 64'hc3dffff8000ffffe; + zrf = 64'h0000000000000000; + ans = 64'hc5d43c75ebe493a6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h1d60000000000000; + y = 64'hc340000000000001; + zrf = 64'h0000000000000000; + ans = 64'ha0b0000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfe0000007fffffb; + y = 64'hb7e000000000200e; + zrf = 64'h0000000000000000; + ans = 64'h37d000000800200a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc340000000000001; + zrf = 64'h0000000000000000; + ans = 64'h8360000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4c6000000ffffe00; + y = 64'hb4cfbffff7fffffe; + zrf = 64'h0000000000000000; + ans = 64'hc13fc00017bffbfe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3b40018000000000; + y = 64'h3ea0400000000100; + zrf = 64'h0000000000000000; + ans = 64'h39f0418600000101; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41cf871987a4786c; + y = 64'hc34fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc52f871987a4786b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4261d11be1f2a3c5; + y = 64'h3caf800000000080; + zrf = 64'h0000000000000000; + ans = 64'h3f2189d7726ad97e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc34fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h836fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'ha6d00ffffc000000; + y = 64'hc1e0002080000000; + zrf = 64'h0000000000000000; + ans = 64'h28c010209c7ff7e0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc770000000001c00; + y = 64'h450fffebfffffffe; + zrf = 64'h0000000000000000; + ans = 64'hcc8fffec000037fd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc000000100002000; + y = 64'hc34ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h4360000100001fff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43dfffff40000000; + y = 64'h3c700000003fffff; + zrf = 64'h0000000000000000; + ans = 64'h405fffff407ffffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc34ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h836ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc504000080000000; + y = 64'hc030000200400000; + zrf = 64'h0000000000000000; + ans = 64'h4544000300501002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h4cdffeffff7fffff; + zrf = 64'h0000000000000000; + ans = 64'h0cfffeffff7fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3dff8000000007e; + y = 64'h3fd0008000000002; + zrf = 64'h0000000000000000; + ans = 64'hc3bff8ffc0000082; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc80e00000000001f; + y = 64'hffe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h07fe00000000001f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4038c1f6b59a2712; + y = 64'hc1effe0000000ffe; + zrf = 64'h0000000000000000; + ans = 64'hc238c06a962ed9ce; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hffe0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3f0fffffdfffffdf; + y = 64'hc2a0000000000402; + zrf = 64'h0000000000000000; + ans = 64'hc1bfffffe00007e2; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7fd007fbffffffff; + y = 64'h400bfffffffefffe; + zrf = 64'h0000000000000000; + ans = 64'h7fec0df8fffeff7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h402fc000000007ff; + y = 64'hffe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'h801fc00000000800; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h400c000003fffffe; + y = 64'h43c0000000020002; + zrf = 64'h0000000000000000; + ans = 64'h43dc000004038002; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hffe0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc000000000000001; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h16dff0001ffffffe; + y = 64'h3fb500ae0796659d; + zrf = 64'h0000000000000000; + ans = 64'h16a4f62dc5934871; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7fdfffffdf800000; + zrf = 64'h0000000000000000; + ans = 64'h3fffffffdf800000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40111e45b8b5ab55; + y = 64'hffefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h80111e45b8b5ab54; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hba0007fffffeffff; + y = 64'h3ca0000008000200; + zrf = 64'h0000000000000000; + ans = 64'hb6b00800080301ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hffefffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc00fffffffffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1dfc7ffffffffff; + y = 64'hc3cff00000000fff; + zrf = 64'h0000000000000000; + ans = 64'h45bfb81c00000fe3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h47ffffffffffdff0; + y = 64'h3f9fdffffffffbff; + zrf = 64'h0000000000000000; + ans = 64'h47afdfffffffdc10; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1fffffe000001ff; + y = 64'hffeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h01fffffe000001fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hba6fffffbf7fffff; + y = 64'hc00fffffbdffffff; + zrf = 64'h0000000000000000; + ans = 64'h3a8fffff7d800084; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hffeffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc00ffffffffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7e003ffffffff7f; + y = 64'hdeafffffeffffffd; + zrf = 64'h0000000000000000; + ans = 64'h56a003fff7fdff7e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h03efffffffffff04; + y = 64'h3dafff7ffffffffa; + zrf = 64'h0000000000000000; + ans = 64'h01afff7ffffffeff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h381ff000000000ff; + y = 64'hfff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hf81ff000000000ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43fe000000004000; + y = 64'h3fdfffc000000400; + zrf = 64'h0000000000000000; + ans = 64'h43edffc4000043c0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hfff0000000000000; + zrf = 64'h0000000000000000; + ans = 64'hc010000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h378b1c4beaf19830; + y = 64'hc1d00000000081ff; + zrf = 64'h0000000000000000; + ans = 64'hb96b1c4beaf27474; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbf8e00000000000e; + y = 64'h342fffffffc01fff; + zrf = 64'h0000000000000000; + ans = 64'hb3cdffffffc41e0d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7febdc9a99e7a82d; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d003fffffffffb; + y = 64'h47effffff0000001; + zrf = 64'h0000000000000000; + ans = 64'hcbd003fff7fdfffb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h406000001fffbfff; + y = 64'h3f20020000080000; + zrf = 64'h0000000000000000; + ans = 64'h3f900200200bbff8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'hc0f01fff00000000; + zrf = 64'h0000000000000000; + ans = 64'h81101fff00000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h001fffefffffefff; + y = 64'h40ac0001fffffffe; + zrf = 64'h0000000000000000; + ans = 64'h00dbfff3fffef1fe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7ffffffff80000f; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h40fffe000001fffe; + y = 64'hc28ffffeffffff7f; + zrf = 64'h0000000000000000; + ans = 64'hc39ffdff0011ff7c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1f010e938b5ded1; + y = 64'h400dfffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc20e1fb54a5501c5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h415ffffffffffe1f; + y = 64'hd96f7f7fffffffff; + zrf = 64'h0000000000000000; + ans = 64'hdadf7f7ffffffe25; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hef00000ffffc0000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h7ffc000000000000; + y = 64'hbab0002007ffffff; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000000; + y = 64'h7ffc000000000000; + zrf = 64'h0000000000000000; + ans = 64'h7ff8000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3eefffffffffffed; + y = 64'h43efe8e5002721cc; + zrf = 64'h0000000000000000; + ans = 64'h42efe8e5002721ba; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h51f00008003ffffe; + y = 64'hc470040000000001; + zrf = 64'h0000000000000000; + ans = 64'hd670040802400ffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ca0020000000000; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h41d0040040000000; + y = 64'hbe4ffffffffbffef; + zrf = 64'h0000000000000000; + ans = 64'hc03004003ffdff77; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000001; + y = 64'h0000000000000000; + zrf = 64'h0000000000000000; + ans = 64'h0000000000000000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1ca0de3d0d15dd1; + y = 64'h3fffffffe03ffffe; + zrf = 64'h0000000000000000; + ans = 64'hc1da0de3b6f795c6; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000001; + y = 64'hb8d09a33206c9699; + zrf = 64'h0000000000000000; + ans = 64'hf8f09a33206c969a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4340800000000020; + y = 64'h3f5fec0000000000; + zrf = 64'h0000000000000000; + ans = 64'h42b075b000000020; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfdffff800100000; + y = 64'h10dfffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h90cffff8000fffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h439fbffffffbffff; + y = 64'hbf8454fd38ef0ba0; + zrf = 64'h0000000000000000; + ans = 64'hc3342c533e7aa2e8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfdf7fffffffffbe; + y = 64'hc3f8cd30846286fc; + zrf = 64'h0000000000000000; + ans = 64'h43e869fbc250fcad; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc010102396a7802c; + y = 64'hc0200000000007bf; + zrf = 64'h0000000000000000; + ans = 64'h4040102396a787f3; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0258dbcf58dfc04; + y = 64'h3da000000001007f; + zrf = 64'h0000000000000000; + ans = 64'hbdd58dbcf58f558a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000001; + y = 64'h43400000000001f8; + zrf = 64'h0000000000000000; + ans = 64'h03600000000001fa; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43e000000009ffff; + y = 64'h407059db2c4f6829; + zrf = 64'h0000000000000000; + ans = 64'h446059db2c59a051; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbca5daf2cc8924e1; + y = 64'hc03000007ffffefe; + zrf = 64'h0000000000000000; + ans = 64'h3ce5daf37b60b9e5; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfc000000000043f; + y = 64'hc2c084efd4d351ba; + zrf = 64'h0000000000000000; + ans = 64'h429084efd4d3561d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hdc1fffffffffffaf; + y = 64'hc34ffffffdffc000; + zrf = 64'h0000000000000000; + ans = 64'h5f7ffffffdffbfb0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h418effffffffff7f; + y = 64'h0010000000000000; + zrf = 64'h0000000000000000; + ans = 64'h01aeffffffffff7f; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1c000000200007e; + y = 64'hbf000001ffffffbf; + zrf = 64'h0000000000000000; + ans = 64'h40d000020200007e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hae31fbffffffffff; + y = 64'h1801c2793142b19f; + zrf = 64'h0000000000000000; + ans = 64'h8643f657b91eb725; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000001; + y = 64'h403fffffffffc1ff; + zrf = 64'h0000000000000000; + ans = 64'h005fffffffffc201; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffd0000fffdfffff; + y = 64'hbb5fffffff81ffff; + zrf = 64'h0000000000000000; + ans = 64'h7b40000fffa0ffc0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h2c8000080000ffff; + y = 64'hf0000000010001ff; + zrf = 64'h0000000000000000; + ans = 64'hdc9000080101027e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37e7ff7fffffffff; + y = 64'h43ff8acf4be4e380; + zrf = 64'h0000000000000000; + ans = 64'h3bf7a79d4dae7b0c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3cfffffffefe000; + y = 64'h37efff0001fffffe; + zrf = 64'h0000000000000000; + ans = 64'hbbcfff0001efe07e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffd7ad4237371282; + y = 64'h001fffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hc007ad4237371281; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h001e6a23746179de; + y = 64'h4b3fffffbfffffe0; + zrf = 64'h0000000000000000; + ans = 64'h0b6e6a23378d32d7; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc1a0000080fffffe; + y = 64'hc00feffbfffffffe; + zrf = 64'h0000000000000000; + ans = 64'h41bfeffd017edfbb; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h480000000008fffe; + y = 64'h001637e790e69de2; + zrf = 64'h0000000000000000; + ans = 64'h082637e790f31d52; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3400ffffffefffe; + y = 64'h001ffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h83700ffffffefffc; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc050000003ffdfff; + y = 64'h3fc000009ffffffe; + zrf = 64'h0000000000000000; + ans = 64'hc0200000a3ffe024; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc02fffffffffffff; + y = 64'h4030000000080000; + zrf = 64'h0000000000000000; + ans = 64'hc07000000007ffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb7effef800000000; + y = 64'h47efff7ffffeffff; + zrf = 64'h0000000000000000; + ans = 64'hbfeffe78041f0007; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h400fffffc3ffffff; + y = 64'h3ca0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3cbfffffc3ffffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfefb80000000000; + y = 64'hbfd9c346f3f0115d; + zrf = 64'h0000000000000000; + ans = 64'h3fd9894f944b3536; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbfb007fffffffbfe; + y = 64'h3fffff0000000007; + zrf = 64'h0000000000000000; + ans = 64'hbfc0077fbffffc01; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000001; + y = 64'h7fe8764cdc1ba128; + zrf = 64'h0000000000000000; + ans = 64'h4008764cdc1ba12a; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h419ffffffdfdffff; + y = 64'hc01fffffffff0000; + zrf = 64'h0000000000000000; + ans = 64'hc1cffffffdfcffff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hbffffffc000003fe; + y = 64'h3ca0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hbcaffffc000003ff; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3ffffffbffe00000; + y = 64'h402ffffbfefffffe; + zrf = 64'h0000000000000000; + ans = 64'h403ffff7fee08023; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hd1bfffffffffffff; + y = 64'h4373dd6bcb6fc58e; + zrf = 64'h0000000000000000; + ans = 64'hd543dd6bcb6fc58d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hb8cfffffffbefffe; + y = 64'h3cafffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'hb58fffffffbefffd; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc0a684d24f5ca22b; + y = 64'hc34ffffeffffffff; + zrf = 64'h0000000000000000; + ans = 64'h440684d19b360fb0; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h37e2e713ec3308f4; + y = 64'h4010000000001fdf; + zrf = 64'h0000000000000000; + ans = 64'h3802e713ec332e9c; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fffff80000001ff; + y = 64'hbffffc0000000040; + zrf = 64'h0000000000000000; + ans = 64'hc00ffb801000023e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43cffdff7fffffff; + y = 64'h3caffffffffffffe; + zrf = 64'h0000000000000000; + ans = 64'h408ffdff7ffffffe; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4014daa7249b383d; + y = 64'hc804080000000000; + zrf = 64'h0000000000000000; + ans = 64'hc82a1bbe415453e8; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h43cffc00000000fe; + y = 64'h43c1ffffffffffff; + zrf = 64'h0000000000000000; + ans = 64'h47a1fdc00000008e; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h6b4848a9a8c0dcd5; + y = 64'h480ffffffffbdfff; + zrf = 64'h0000000000000000; + ans = 64'h736848a9a8bdbb77; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h3fc9e8c6d2ecf933; + y = 64'h3fd0000000000000; + zrf = 64'h0000000000000000; + ans = 64'h3fa9e8c6d2ecf933; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h4037ab91bff33a68; + y = 64'h3dbfdffffffffff7; + zrf = 64'h0000000000000000; + ans = 64'h3e0793e62e334727; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hffeffffffffbfefe; + y = 64'h3c503ffffeffffff; + zrf = 64'h0000000000000000; + ans = 64'hfc503ffffefdf77b; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'h0010000000000001; + y = 64'h400fffffffff7bff; + zrf = 64'h0000000000000000; + ans = 64'h002fffffffff7c01; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc92bffffffffff7e; + y = 64'h3cc00007fffe0000; + zrf = 64'h0000000000000000; + ans = 64'hc5fc000dfffc7f7d; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); xrf = 64'hc3d00000201fffff; + y = 64'h3fd0000000000001; + zrf = 64'h0000000000000000; + ans = 64'hc3b0000020200000; + rn = 1; + rz = 0; + rm = 0; + rp = 0; + earlyres = 64'b0; + earlyressel = 0; + bypsel= 2'b0; + bypplus1 = 0; + byppostnorm = 0; +#10 + $fwrite(fp, "%h %h %h %h ",xrf,y,w, ans); + if(w != ans) $fwrite(fp, " Wrong"); + $fwrite(fp,"\n"); $stop; end endmodule \ No newline at end of file diff --git a/wally-pipelined/src/fpu/FMA/tbgen/test_gen.sh b/wally-pipelined/src/fpu/FMA/tbgen/test_gen.sh index a8dd70b8..dc9562b1 100755 --- a/wally-pipelined/src/fpu/FMA/tbgen/test_gen.sh +++ b/wally-pipelined/src/fpu/FMA/tbgen/test_gen.sh @@ -1,3 +1,3 @@ -testfloat_gen f64_mulAdd -tininessbefore -n 6133248 -rmin -seed 113355 -level 1 > testFloat +testfloat_gen f64_mulAdd -tininessafter -n 6133248 -rmin -seed 113355 -level 1 > testFloat tr -d ' ' < testFloat > testFloatNoSpace diff --git a/wally-pipelined/src/fpu/fma2.sv b/wally-pipelined/src/fpu/fma2.sv index 89a059dc..f9efe93e 100644 --- a/wally-pipelined/src/fpu/fma2.sv +++ b/wally-pipelined/src/fpu/fma2.sv @@ -288,9 +288,9 @@ module fma2( // Set Underflow flag if the number is too small to be represented in normal numbers // - Don't set the underflow flag if the result is exact - assign Underflow = (SumExp[12] | ((SumExp == 0) & (Round|Guard|Sticky)) )&~(XNaNM|YNaNM|ZNaNM|XInfM|YInfM|ZInfM); - assign UnderflowFlag = Underflow | (FullResultExp == 0)&Minus1; // before rounding option - // assign UnderflowFlag = (Underflow | (FullResultExp == 0)&~(XNaNM|YNaNM|ZNaNM|XInfM|YInfM|ZInfM)&(Round|Guard|Sticky)) & ~(FullResultExp == 1); //after rounding option + assign Underflow = (SumExp[12] | ((SumExp == 0) & (Round|Guard|Sticky)))&~(XNaNM|YNaNM|ZNaNM|XInfM|YInfM|ZInfM); + //assign UnderflowFlag = (Underflow | (FullResultExp == 0)&~(XNaNM|YNaNM|ZNaNM|XInfM|YInfM|ZInfM)&(Round|Guard|Sticky)) & ~(FullResultExp == 1); + assign UnderflowFlag = (Underflow | (FullResultExp == 0)&~(XNaNM|YNaNM|ZNaNM|XInfM|YInfM|ZInfM)&(Round|Guard|Sticky)) & ~(FullResultExp == 1); // Set Inexact flag if the result is diffrent from what would be outputed given infinite precision // - Don't set the underflow flag if an underflowed result isn't outputed assign Inexact = (Sticky|Overflow|Guard|Round|Underflow)&~(XNaNM|YNaNM|ZNaNM|XInfM|YInfM|ZInfM); diff --git a/wally-pipelined/src/fpu/fpu.sv b/wally-pipelined/src/fpu/fpu.sv index 016f004a..fc38b2f6 100755 --- a/wally-pipelined/src/fpu/fpu.sv +++ b/wally-pipelined/src/fpu/fpu.sv @@ -25,129 +25,127 @@ `include "wally-config.vh" module fpu ( - input logic [2:0] FRM_REGW, // Rounding mode from CSR - input logic reset, - //input logic clear, // *** not being used anywhere - input logic clk, - input logic [31:0] InstrD, - input logic [`XLEN-1:0] SrcAE, // Integer input being processed - input logic [`XLEN-1:0] SrcAM, // Integer input being written into fpreg - input logic StallE, StallM, StallW, - input logic FlushE, FlushM, FlushW, - input logic [`AHBW-1:0] HRDATA, - input logic RegWriteD, - output logic [4:0] SetFflagsM, - output logic [31:0] FSROutW, - output logic [1:0] FMemRWM, - output logic FStallD, - output logic FWriteIntE, FWriteIntM, FWriteIntW, - output logic [`XLEN-1:0] FWriteDataM, - output logic FDivBusyE, - output logic IllegalFPUInstrD, - output logic [`XLEN-1:0] FPUResultW); + input logic [2:0] FRM_REGW, // Rounding mode from CSR + input logic reset, + input logic clk, + input logic [31:0] InstrD, + input logic [`XLEN-1:0] SrcAE, // Integer input being processed + input logic [`XLEN-1:0] SrcAM, // Integer input being written into fpreg + input logic StallE, StallM, StallW, + input logic FlushE, FlushM, FlushW, + input logic [`XLEN-1:0] ReadDataW, // Read data from memory + input logic RegWriteD, // register write enable from ieu + output logic [4:0] SetFflagsM, // FPU flags + output logic [1:0] FMemRWM, // Read/write enable for memory {read, write} + output logic FStallD, // Stall the decode stage if Div/Sqrt instruction + output logic FWriteIntE, FWriteIntM, FWriteIntW, // Write integer register enable + output logic [`XLEN-1:0] FWriteDataM, // Data to be written to memory + output logic FDivBusyE, // Is the divison/sqrt unit busy + output logic IllegalFPUInstrD, // Is the instruction an illegal fpu instruction + output logic [`XLEN-1:0] FPUResultW); // FPU result // control logic signal instantiation - logic FWriteEnD, FWriteEnE, FWriteEnM, FWriteEnW; // FP register write enable - logic [2:0] FrmD, FrmE, FrmM, FrmW; // FP rounding mode - logic FmtD, FmtE, FmtM, FmtW; // FP precision 0-single 1-double - logic FDivStartD, FDivStartE; // Start division - logic FWriteIntD; // Write to integer register - logic FOutputInput2D, FOutputInput2E; // Put Input2 in Input1 if a store instruction - logic [1:0] FMemRWD, FMemRWE; // Read and write enable for memory - logic [1:0] FForwardInput1D, FForwardInput1E; // Input1 forwarding mux control signal - logic [1:0] FForwardInput2D, FForwardInput2E; // Input2 forwarding mux control signal - logic FForwardInput3D, FForwardInput3E; // Input3 forwarding mux control signal - logic FInput2UsedD; // Is input 2 used - logic FInput3UsedD; // Is input 3 used - logic [2:0] FResultSelD, FResultSelE, FResultSelM, FResultSelW; // Select FP result - logic [3:0] FOpCtrlD, FOpCtrlE, FOpCtrlM; // Select which opperation to do in each component - logic SelLoadInputE, SelLoadInputM; + logic FWriteEnD, FWriteEnE, FWriteEnM, FWriteEnW; // FP register write enable + logic [2:0] FrmD, FrmE, FrmM, FrmW; // FP rounding mode + logic FmtD, FmtE, FmtM, FmtW; // FP precision 0-single 1-double + logic FDivStartD, FDivStartE; // Start division + logic FWriteIntD; // Write to integer register + logic FOutputInput2D, FOutputInput2E; // Put Input2 in Input1 if a store instruction + logic [1:0] FMemRWD, FMemRWE; // Read and write enable for memory + logic [1:0] FForwardInput1D, FForwardInput1E; // Input1 forwarding mux control signal + logic [1:0] FForwardInput2D, FForwardInput2E; // Input2 forwarding mux control signal + logic FForwardInput3D, FForwardInput3E; // Input3 forwarding mux control signal + logic FInput2UsedD; // Is input 2 used + logic FInput3UsedD; // Is input 3 used + logic [2:0] FResultSelD, FResultSelE, FResultSelM, FResultSelW; // Select FP result + logic [3:0] FOpCtrlD, FOpCtrlE, FOpCtrlM, FOpCtrlW; // Select which opperation to do in each component + logic SelLoadInputE, SelLoadInputM; // Select which adress to load when single precision // regfile signals //*** KEP lint warning - changed `XLEN-1 to 63 - logic [4:0] RdE, RdM, RdW; // ***Can take from ieu - logic [63:0] FWDM; // Write data for FP register - logic [63:0] FRD1D, FRD2D, FRD3D; // Read Data from FP register - logic [63:0] FRD1E, FRD2E, FRD3E; - logic [63:0] FInput1E, FInput1M, FInput1tmpE; - logic [63:0] FInput2E, FInput2M; - logic [63:0] FInput3E, FInput3M; - logic [63:0] FLoadResultM, FLoadStoreResultM, FLoadStoreResultW; // Result for load, store, and move to int-reg instructions + logic [4:0] RdE, RdM, RdW; // what adress to write to // ***Can take from ieu insted of pipelining + logic [63:0] FWDM; // Write data for FP register + logic [63:0] FRD1D, FRD2D, FRD3D; // Read Data from FP register - decode stage + logic [63:0] FRD1E, FRD2E, FRD3E; // Read Data from FP register - execute stage + logic [63:0] FInput1E, FInput1M, FInput1W, FInput1tmpE; // Input 1 to the various units (after forwarding) + logic [63:0] FInput2E, FInput2M; // Input 2 to the various units (after forwarding) + logic [63:0] FInput3E, FInput3M; // Input 3 to the various units (after forwarding) + logic [63:0] FLoadResultW, FLoadStoreResultM, FLoadStoreResultW; // Result for load, store, and move to int-reg instructions // div/sqrt signals logic DivDenormE, DivDenormM, DivDenormW; logic DivOvEn, DivUnEn; - logic [63:0] FDivResultE, FDivResultM, FDivResultW; - logic [4:0] FDivFlagsE, FDivFlagsM, FDivFlagsW; - logic FDivSqrtDoneE, FDivSqrtDoneM; - logic [63:0] DivInput1E, DivInput2E; - logic HoldInputs; + logic [63:0] FDivResultE, FDivResultM, FDivResultW; + logic [4:0] FDivFlagsE, FDivFlagsM, FDivFlagsW; + logic FDivSqrtDoneE, FDivSqrtDoneM; + logic [63:0] DivInput1E, DivInput2E; + logic HoldInputs; // keep forwarded inputs arround durring division // FMA signals - logic [105:0] ProdManE, ProdManM; - logic [161:0] AlignedAddendE, AlignedAddendM; - logic [12:0] ProdExpE, ProdExpM; - logic AddendStickyE, AddendStickyM; - logic KillProdE, KillProdM; - logic XZeroE, YZeroE, ZZeroE, XZeroM, YZeroM, ZZeroM; - logic XInfE, YInfE, ZInfE, XInfM, YInfM, ZInfM; - logic XNaNE, YNaNE, ZNaNE, XNaNM, YNaNM, ZNaNM; - logic [63:0] FmaResultM, FmaResultW; - logic [4:0] FmaFlagsM, FmaFlagsW; + logic [105:0] ProdManE, ProdManM; + logic [161:0] AlignedAddendE, AlignedAddendM; + logic [12:0] ProdExpE, ProdExpM; + logic AddendStickyE, AddendStickyM; + logic KillProdE, KillProdM; + logic XZeroE, YZeroE, ZZeroE, XZeroM, YZeroM, ZZeroM; + logic XInfE, YInfE, ZInfE, XInfM, YInfM, ZInfM; + logic XNaNE, YNaNE, ZNaNE, XNaNM, YNaNM, ZNaNM; + logic [63:0] FmaResultM, FmaResultW; + logic [4:0] FmaFlagsM, FmaFlagsW; // add/cvt signals - logic [63:0] AddSumE, AddSumTcE; - logic [3:0] AddSelInvE; - logic [10:0] AddExpPostSumE; + logic [63:0] AddSumE, AddSumTcE; + logic [3:0] AddSelInvE; + logic [10:0] AddExpPostSumE; logic AddCorrSignE, AddOp1NormE, AddOp2NormE, AddOpANormE, AddOpBNormE, AddInvalidE; logic AddDenormInE, AddSwapE, AddNormOvflowE, AddSignAE; logic AddConvertE; - logic [63:0] AddFloat1E, AddFloat2E; - logic [11:0] AddExp1DenormE, AddExp2DenormE; - logic [10:0] AddExponentE; - logic [2:0] AddRmE; - logic [3:0] AddOpTypeE; + logic [63:0] AddFloat1E, AddFloat2E; + logic [11:0] AddExp1DenormE, AddExp2DenormE; + logic [10:0] AddExponentE; + logic [2:0] AddRmE; + logic [3:0] AddOpTypeE; logic AddPE, AddOvEnE, AddUnEnE; logic AddDenormM; - logic [63:0] AddSumM, AddSumTcM; - logic [3:0] AddSelInvM; - logic [10:0] AddExpPostSumM; + logic [63:0] AddSumM, AddSumTcM; + logic [3:0] AddSelInvM; + logic [10:0] AddExpPostSumM; logic AddCorrSignM, AddOp1NormM, AddOp2NormM, AddOpANormM, AddOpBNormM, AddInvalidM; logic AddDenormInM, AddSwapM, AddNormOvflowM, AddSignAM; logic AddConvertM, AddSignM; - logic [63:0] AddFloat1M, AddFloat2M; - logic [11:0] AddExp1DenormM, AddExp2DenormM; - logic [10:0] AddExponentM; - logic [63:0] AddOp1M, AddOp2M; - logic [2:0] AddRmM; - logic [3:0] AddOpTypeM; + logic [63:0] AddFloat1M, AddFloat2M; + logic [11:0] AddExp1DenormM, AddExp2DenormM; + logic [10:0] AddExponentM; + logic [63:0] AddOp1M, AddOp2M; + logic [2:0] AddRmM; + logic [3:0] AddOpTypeM; logic AddPM, AddOvEnM, AddUnEnM; - logic [63:0] FAddResultM, FAddResultW; - logic [4:0] FAddFlagsM, FAddFlagsW; + logic [63:0] FAddResultM, FAddResultW; + logic [4:0] FAddFlagsM, FAddFlagsW; // cmp signals - logic [7:0] WE, WM; - logic [7:0] XE, XM; + logic [7:0] WE, WM; + logic [7:0] XE, XM; logic ANaNE, ANaNM; logic BNaNE, BNaNM; logic AzeroE, AzeroM; logic BzeroE, BzeroM; logic CmpInvalidM, CmpInvalidW; - logic [1:0] CmpFCCM, CmpFCCW; - logic [63:0] FCmpResultM, FCmpResultW; + logic [1:0] CmpFCCM, CmpFCCW; + logic [63:0] FCmpResultM, FCmpResultW; // fsgn signals - logic [63:0] SgnResultE, SgnResultM, SgnResultW; - logic [4:0] SgnFlagsE, SgnFlagsM, SgnFlagsW; + logic [63:0] SgnResultE, SgnResultM, SgnResultW; + logic [4:0] SgnFlagsE, SgnFlagsM, SgnFlagsW; // instantiation of W stage regfile signals - logic [63:0] AlignedSrcAM, ForwardSrcAM, SrcAW; + logic [63:0] AlignedSrcAM, ForwardSrcAM, SrcAW; // classify signals - logic [63:0] ClassResultE, ClassResultM, ClassResultW; + logic [63:0] ClassResultE, ClassResultM, ClassResultW; // 64-bit FPU result - logic [63:0] FPUResult64W, FPUResult64E; - logic [4:0] FPUFlagsW; + logic [63:0] FPUResult64W, FPUResult64E; + logic [4:0] FPUFlagsW; // pipeline control logic logic PipeEnableDE; @@ -159,8 +157,8 @@ module fpu ( // temporarily assign pipe clear and enable signals // to never flush & always be running - localparam PipeClear = 1'b0; - localparam PipeEnable = 1'b1; + localparam PipeClear = 1'b0; + localparam PipeEnable = 1'b1; always_comb begin PipeEnableDE = ~StallE; PipeEnableEM = ~StallM; @@ -219,6 +217,7 @@ module fpu ( mux2 #(64) FInput3Emux(FRD3E, FPUResult64E, FForwardInput3E, FInput3E); mux2 #(64) FOutputInput2mux(FInput1tmpE, FInput2E, FOutputInput2E, FInput1E); + // first of two-stage instance of floating-point fused multiply-add unit fma1 fma1 (.X(FInput1E), .Y(FInput2E), .Z(FInput3E), .FOpCtrlE(FOpCtrlE[2:0]),.*); // first and only instance of floating-point divider @@ -275,13 +274,6 @@ module fpu ( flopenrc #(1) EMRegFma19(clk, reset, PipeClearEM, PipeEnableEM, XNaNE, XNaNM); flopenrc #(1) EMRegFma20(clk, reset, PipeClearEM, PipeEnableEM, YNaNE, YNaNM); flopenrc #(1) EMRegFma21(clk, reset, PipeClearEM, PipeEnableEM, ZNaNE, ZNaNM); - - //***************** - // fpdiv E/M pipe registers - //***************** - // flopenrc #(64) EMRegDiv1(clk, reset, PipeClearEM, PipeEnableEM, FDivResultE, FDivResultM); - // flopenrc #(5) EMRegDiv2(clk, reset, PipeClearEM, PipeEnableEM, FDivFlagsE, FDivFlagsM); - // flopenrc #(1) EMRegDiv3(clk, reset, PipeClearEM, PipeEnableEM, DivDenormE, DivDenormM); //***************** // fpadd E/M pipe registers @@ -352,8 +344,8 @@ module fpu ( assign FWriteDataM = FmtM ? FInput1M[63:64-`XLEN] : {{`XLEN-32{1'b0}}, FInput1M[63:32]}; //adjecent adress values are sent to the FPU, select the correct one // -imm is 80000 most of the time vs the error one which is 00000 - mux3 #(64) FLoadResultMux({HRDATA[31:0], {64-`AHBW+(`XLEN-32){1'b0}}}, {HRDATA[`AHBW-1:`AHBW-32], {64-`AHBW+(`XLEN-32){1'b0}}}, {HRDATA, {64-`AHBW{1'b0}}}, {FmtM, SelLoadInputM}, FLoadResultM); - mux2 #(64) FLoadStoreResultMux(FLoadResultM, FInput1M, |FOpCtrlM[2:1], FLoadStoreResultM); + // mux3 #(64) FLoadResultMux({HRDATA[31:0], {64-`AHBW+(`XLEN-32){1'b0}}}, {HRDATA[`AHBW-1:`AHBW-32], {64-`AHBW+(`XLEN-32){1'b0}}}, {HRDATA, {64-`AHBW{1'b0}}}, {FmtM, SelLoadInputM}, FLoadResultM); + // mux2 #(64) FLoadStoreResultMux(FLoadResultM, FInput1M, |FOpCtrlM[2:1], FLoadStoreResultM); fma2 fma2(.X(FInput1M), .Y(FInput2M), .Z(FInput3M), .FOpCtrlM(FOpCtrlM[2:0]), .*); @@ -364,8 +356,18 @@ module fpu ( fpucmp2 fpcmp2 (.Invalid(CmpInvalidM), .FCC(CmpFCCM), .ANaN(ANaNM), .BNaN(BNaNM), .Azero(AzeroM), .Bzero(BzeroM), .w(WM), .x(XM), .Sel({1'b0, FmtM}), .op1(FInput1M), .op2(FInput2M), .*); + // Align SrcA to MSB when single precicion mux2 #(64) SrcAMux({SrcAM[31:0], 32'b0}, {{64-`XLEN{1'b0}}, SrcAM}, FmtM, AlignedSrcAM); + + + + + //***************** + //fpregfile M/W pipe registers + //***************** + flopenrc #(64) MWFpReg1(clk, reset, PipeClearMW, PipeEnableMW, FInput1M, FInput1W); + //***************** // fma M/W pipe registers //***************** @@ -406,18 +408,36 @@ module fpu ( flopenrc #(1) MWReg3(clk, reset, PipeClearMW, PipeEnableMW, FmtM, FmtW); flopenrc #(5) MWReg4(clk, reset, PipeClearMW, PipeEnableMW, RdM, RdW); flopenrc #(64) MWReg5(clk, reset, PipeClearMW, PipeEnableMW, AlignedSrcAM, SrcAW); - flopenrc #(64) MWReg6(clk, reset, PipeClearMW, PipeEnableMW, FLoadStoreResultM, FLoadStoreResultW); + // flopenrc #(64) MWReg6(clk, reset, PipeClearMW, PipeEnableMW, FLoadStoreResultM, FLoadStoreResultW); flopenrc #(1) MWReg7(clk, reset, PipeClearMW, PipeEnableMW, FWriteIntM, FWriteIntW); + flopenrc #(4) MWReg6(clk, reset, PipeClearMW, PipeEnableMW, FOpCtrlM, FOpCtrlW); //***************** // fpuclassify M/W pipe registers //***************** flopenrc #(64) MWRegClass(clk, reset, PipeClearMW, PipeEnableMW, ClassResultM, ClassResultW); + + + + //######################################### // BEGIN WRITEBACK STAGE //######################################### + + // mux3 #(64) FLoadResultMux({ReadD[31:0], {64-`AHBW+(`XLEN-32){1'b0}}}, {HRDATA[`AHBW-1:`AHBW-32], {64-`AHBW+(`XLEN-32){1'b0}}}, {HRDATA, {64-`AHBW{1'b0}}}, {FmtM, SelLoadInputM}, FLoadResultM); + // mux2 #(64) FLoadStoreResultMux(FLoadResultM, FInput1M, |FOpCtrlM[2:1], FLoadStoreResultM); + //***RV32D needs to give two bus transactions + mux2 #(64) FLoadResultMux({ReadDataW[31:0], {32{1'b0}}}, {ReadDataW, {64-`XLEN{1'b0}}}, FmtW, FLoadResultW); + mux2 #(64) FLoadStoreResultMux(FLoadResultW, FInput1W, |FOpCtrlW[2:1], FLoadStoreResultW); + + + + + + + always_comb begin case (FResultSelW) // div/sqrt diff --git a/wally-pipelined/src/wally/wallypipelinedhart.sv b/wally-pipelined/src/wally/wallypipelinedhart.sv index 8d02978a..bb35d483 100644 --- a/wally-pipelined/src/wally/wallypipelinedhart.sv +++ b/wally-pipelined/src/wally/wallypipelinedhart.sv @@ -99,7 +99,6 @@ module wallypipelinedhart ( logic SquashSCW; logic FStallD; logic FWriteIntE, FWriteIntW, FWriteIntM; - logic [31:0] FSROutW; logic FDivBusyE; logic IllegalFPUInstrD, IllegalFPUInstrE; logic [`XLEN-1:0] FPUResultW; diff --git a/wally-pipelined/testbench/testbench-imperas.sv b/wally-pipelined/testbench/testbench-imperas.sv index b2f256d4..1bbe6124 100644 --- a/wally-pipelined/testbench/testbench-imperas.sv +++ b/wally-pipelined/testbench/testbench-imperas.sv @@ -59,15 +59,15 @@ module testbench(); string tests32f[] = '{ "rv32f/I-FADD-S-01", "2000", "rv32f/I-FCLASS-S-01", "2000", - "rv32f/I-FCVT-S-L-01", "2000", - "rv32f/I-FCVT-S-LU-01", "2000", - "rv32f/I-FCVT-S-W-01", "2000", - "rv32f/I-FCVT-S-WU-01", "2000", - "rv32f/I-FCVT-L-S-01", "2000", - "rv32f/I-FCVT-LU-S-01", "2000", - "rv32f/I-FCVT-W-S-01", "2000", - "rv32f/I-FCVT-WU-S-01", "2000", - "rv32f/I-FDIV-S-01", "2000", + // "rv32f/I-FCVT-S-L-01", "2000", + // "rv32f/I-FCVT-S-LU-01", "2000", + // "rv32f/I-FCVT-S-W-01", "2000", + // "rv32f/I-FCVT-S-WU-01", "2000", + // "rv32f/I-FCVT-L-S-01", "2000", + // "rv32f/I-FCVT-LU-S-01", "2000", + // "rv32f/I-FCVT-W-S-01", "2000", + // "rv32f/I-FCVT-WU-S-01", "2000", + // "rv32f/I-FDIV-S-01", "2000", "rv32f/I-FEQ-S-01", "2000", "rv32f/I-FLE-S-01", "2000", "rv32f/I-FLT-S-01", "2000", @@ -83,14 +83,14 @@ string tests32f[] = '{ "rv32f/I-FSGNJ-S-01", "2000", "rv32f/I-FSGNJN-S-01", "2000", "rv32f/I-FSGNJX-S-01", "2000", - "rv32f/I-FSQRT-S-01", "2000", + // "rv32f/I-FSQRT-S-01", "2000", "rv32f/I-FSW-01", "2000", - "rv32f/I-FLW-01", "2000", + "rv32f/I-FLW-01", "2110", "rv32f/I-FSUB-S-01", "2000" }; string tests64f[] = '{ - // "rv64f/I-FLW-01", "2110", + "rv64f/I-FLW-01", "2110", "rv64f/I-FMV-W-X-01", "2000", "rv64f/I-FMV-X-W-01", "2000", "rv64f/I-FSW-01", "2000",